精灵套件 - 目标c,同时移动多个SKNode

时间:2016-09-25 09:29:33

标签: ios objective-c sprite-kit

我有这个方法,使行

  [_Linea runAction:[SKAction moveByX: -(self.size.width/8) y:0 duration:0.1]];
  [self spawn_Lines];

在触摸屏幕的touchesBegan方法中,播放器始终位于屏幕中央,而他后面的线条必须移动-x。

{{1}}

但此操作仅由最后一个SKNode执行。我需要同时将它应用于所有行。之后,当线的位置小于玩家的位置时,必须删除该线。

2 个答案:

答案 0 :(得分:1)

SpriteKit使用基于树的模型,因此无论父节点做什么,孩子都会适应。创建一个SKNode来容纳所有行,将所有行添加到此SKNode,然后将操作应用于SKNode,而不是行。

答案 1 :(得分:0)

将它们添加到NSMutableArray以保持每个循环的引用和使用,以使每个循环运行该操作。我建议你使用NSTimer以恒定速度提供[SKAction moveByX:-1 y:0 duration:0]],这将产生与你已经使用的相同的动作。每次执行此NSTimer时,您将检查NSMutableArray中对象的所有位置,如果它符合您的条件,则将其删除。想要完全丢失引用时要小心[object removeFromParent];并从NSMutableArray中删除它,以避免以后丢失性能。为此,我使用forLoop和continue方法