【发布时间】:2014-05-07 17:11:07
【问题描述】:
我正在尝试快速将一个节点与其父节点分离并附加到另一个节点,以便准确地跟随父节点的位置。我使用以下代码:
// detach from parent
[_player removeFromParent];
// attach back to world node, at the same visual location, before taking action
[_player setCenterPosition: CGPointMake(newPosX,newPosY)];
[_worldNode addChild:_player];
但是,我在第二次运行此代码时闪烁,并且看起来并非完美无缺。有没有更快的方法从其父节点附加/分离节点?
【问题讨论】:
-
不知道你为什么要这样做,但肯定有一个解决方案可以在没有“reparenting”的情况下工作,而且可以说它也是一个更好的解决方案。在最基本的层面上,它只需要将场景更新中的位置设置为另一个节点的位置。
-
该节点是否有可能还有一个
SKAction正在进行中? -
是否还有其他代码会影响该节点的位置?而且它可能仍然会改变它的位置,即使只是为了一个框架?你正在做的事情应该有效,但我的猜测是还有其他原因导致了这个问题,你不认为应该是一个因素。我还假设
setCenterPosition中的内容完全符合您的预期。 -
我刚刚做了一个测试,删除了一个父级并将其添加到另一个父级,只要我正确计算新位置,它就可以正常工作。我没有闪烁。因此,正如我所想的那样,这里还有更多可玩的地方。
-
我跟踪另一个节点(有 SKAction 运动)的原因是玩家坐在这个节点上。当我希望玩家跳跃/移动时,我必须分离玩家节点。如果我只是根据移动节点更新玩家的位置,我会有一个小的延迟,导致看起来很糟糕的漂移。
标签: ios7 sprite-kit