纹理在同一个SKSpriteNode Swift iOS

时间:2017-12-24 00:31:24

标签: ios swift skspritenode texture-atlas

所以我有这两个函数可以帮助我在SKSpriteNode上显示不同的动画。但是每当纹理发生变化时我都需要改变这个Sprite的alpha蒙版,而我似乎无法找到一种方法。

var atlasAnimation = [SKTexture]()


func loadAnimation() {
    let spriteAtlas = SKTextureAtlas(named: "atlasImages)")

    for index in 1...spriteAtlas.textureNames.count{
        let imgName = String(format: "atlasImages%01d", index) //different images that I need with their respective alpha mask
        atlasAnimation += [spriteAtlas.textureNamed(imgName)]
    }

}

func runAnimation() {
    animationNode = self.childNode(withName: "spriteWhatever") as? SKSpriteNode
    if (animationNode != nil) {
        let animation = SKAction.animate(with: atlasAnimation, timePerFrame: 0.1)
        let forever = SKAction.repeatForever(animation)
        animationNode?.run(forever)
    }
}

我一直在搜索一下,发现如何使用代码而不是Xcode侧边栏上的复选框(这有助于使用那个纹理设置alpha蒙版)来执行alpha蒙版事件,我发现了如何用普通的SKTexture做到这一点。但是对于这个动画我需要一个[SKTexture]并且它不会覆盖正常的physicsBody纹理属性,因为它需要SKTexture参数而不是[SKTexture]。

animationNode.physicsBody = SKPhysicsBody(texture: atlasAnimation, size: atlasAnimation.size()) 
//so atlasAnimation can't be placed here in "texture"

有什么想法吗?

0 个答案:

没有答案