我有两个函数可以帮助我在我的 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"
有任何想法吗?