所以我有这两个函数可以帮助我在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"
有什么想法吗?