在 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 (将#修改为@)