我已经对SpriteKit进行了一段时间的实验,我希望得到一些关于SKSpriteNode在SKScene范围内移动的“最佳实践”的输入。
使用加速度计,我正在施力于SKSpriteNode的PhysicsBody属性上,以便以类似大理石的方式在屏幕周围移动节点。目前,我将场景的PhysicsBody设置为使用self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame],这样大理石就可以简单地从场景的边缘反弹。
我不希望弹跳出我的场景的边缘,我希望一旦大理石超出我的场景边界(1)它会以同样的速度出现在我的场景的另一边(2)。我还希望这个边界包装立即发生,这样的话,当大理石的任何部分移出我的场景的边界(3)时,该部分将在场景(4)的相反一侧变得可见。
在使用单个SKSpriteNode并保留该节点的PhysicsBody时,是否有可能做到这一点?
提前感谢!

发布于 2014-06-08 22:05:52
不是的。你需要4个精灵节点,如果精灵可以离开屏幕的任何方向,以避免雪碧只是“弹出”时,切换侧。你必须通过选择四个精灵中的一个来同步它们的位置和速度,成为“主人”精灵。
另外三个节点只是在屏幕边缘以视觉方式表示精灵,并获取物理联系人(这可能很棘手,因为每个节点都可以联系,所有4个节点都可以同时进行相同的接触)。Otoh,它可能甚至没有必要给其他三个物理体,取决于其他物体是什么,与之碰撞。简单地说,如果主程序也会发生碰撞,“奴隶”可能总是会发生碰撞,但是只有当其他物体使用相同的机制或者在屏幕边界附近永远不会发生碰撞时,这才是正确的。
您将抵消3副本的+宽度,+高度和+width+height的场景大小,并重新计算此偏移量每帧基础上的主精灵的位置。当它真正离开屏幕的一侧时,你必须改变主精灵的位置。例如,当主精灵离开屏幕的右侧时,您将减去(没有设置!)从x位置开始的场景大小的宽度。
https://stackoverflow.com/questions/24111042
复制相似问题