微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 SpriteKit 中创建一个闪烁/可变的 SKLightNode - 模拟篝火照明

如何解决在 SpriteKit 中创建一个闪烁/可变的 SKLightNode - 模拟篝火照明

我有一个在 SpriteKit 中使用纹理图集的动画篝火,我正在尝试模拟火会产生的可变照明。我能够通过传入一个随机数形式 0...1.5 来改变衰减来实现闪烁。它有效,但有点太疯狂了 - 寻找关于平滑它的建议以使其更加微妙和现实 - 也许通过一组设置值 - 不知道我会怎么做?还是某种形式的宽松?

func buildCampfire() {
        let campfireAtlas = SKTextureAtlas(named: "Campfire")
        var fireFrames: [SKTexture] = []
        
        let numImages = campfireAtlas.textureNames.count
        for i in 1...numImages {
            let fireTextureName = "campfire\(i)"
            fireFrames.append(campfireAtlas.textureNamed(fireTextureName))
        }
        animatedCampfire = fireFrames
        
        let firstFrameTexture = animatedCampfire[0]
        campfire = SKSpriteNode(texture: firstFrameTexture)
        campfire.size.height = 300
        campfire.size.width = 300
        campfire.position = CGPoint(x: 108,y: -188)
        addChild(campfire)
    }
    
    func animateCampfire() {
        campfire.run(SKAction.repeatForever(SKAction.animate(with: animatedCampfire,timePerFrame: 0.1,resize: false,restore: true)),withKey: "campfireAnimated")
    }

    
    func flickerCampfire() {
        if let campfireLight = self.childNode(withName: "//campfireLight") as? SKLightNode {
            campfireLight.falloff = CGFloat.random(in: 0..<1.5)
    
        } else {
            print("cannot find light node")
        }
    }
    
    override func update(_ currentTime: TimeInterval) {
        flickerCampfire()
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。