我有几个动画的不同SKSpriteNodes。在游戏过程中,新节点会在不可预测的时间产生,但我希望它们能够与现有节点同步动画。
目前,我通过运行动作从头开始在init()中启动动画:
func init() {
let textures = GlobalVariableTexturesArray
let animation = SKAction.animateWithTextures(...)
let repeat = SKAction.repeatActionForever(animation)
runAction(repeat)
}
我能想到完成同步的唯一方法是在GameScene.update()期间进行自己的数学计算并找出当前帧。然后直接将此纹理应用于我的所有节点。
答案 0 :(得分:1)
在场景的更新方法中,您需要为相关的每个精灵手动设置纹理。
这可能很接近。它假设所有节点都直接在某种背景层上,并且所有节点都符合您定义的子类,该子类实现了一个名为setNextFrame的方法:
-(void)update:(CFTimeInterval)currentTime {
[self.bgLayer enumerateChildNodesWithName:@"nodesNameToAnimate" usingBlock:^(SKNode *node, BOOL *stop) {
[(MySubClassedNode*)node setNextFrame:currentTime];
}];
}
答案 1 :(得分:-1)
只需创建父节点并在此节点上运行操作即可。然后你可以新的节点,他们将移动同步:
var parentNode = SKNode()
parentNode.addChild(child1)
parentNode.addChild(child2)
parentNode.runAction(yourAction)