Mat*_*hew 3 objective-c ios sprite-kit
我已经尝试使用 SpriteKit 一段时间了,我希望得到一些关于我的 SKSpriteNode 在其 SKScene\xe2\x80\x99s 范围内移动的 \xe2\x80\x9cbestpractice\xe2\x80\x9d 输入。
\n\n使用加速计,我对 SKSpriteNode 的PhysicsBody 属性施加力,以便以大理石般的方式在屏幕上移动节点。目前,我使用设置场景的PhysicsBodyself.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame],以便弹珠简单地从场景边缘反弹。
我希望一旦弹珠超出我的场景\xe2\x80\x99s 边界 (1),它就会以相同的速度重新出现在我的场景的另一侧 (2),而不是从场景的边缘反弹。 。我还希望这种边界环绕立即发生,并且以这样的方式,当大理石的任何部分移动到我的场景\xe2\x80\x99s 边界 (3) 之外时,该部分将在大理石的另一侧变得可见。场景(4)。
\n\n是否可以在使用单个 SKSpriteNode 并保留该节点\xe2\x80\x99sPhysicsBody 的同时完成此任务?
\n\n提前致谢!
\n\n
没有。如果精灵可以向任何方向离开屏幕,则需要 4 个精灵节点,以避免精灵在切换方向时仅仅“弹出”进出。您必须通过选择 4 个精灵之一作为“主”精灵来同步它们的位置和速度。
其他三个节点仅用于沿屏幕边缘视觉地表示精灵以及拾取物理接触(这可能很棘手,因为每个节点都可以接触,并且所有 4 个节点可能同时进行相同的接触)。Otoh,甚至可能没有必要给出其他三个物理体,具体取决于要与哪些其他物体发生碰撞。原因很简单,如果主物体也发生碰撞,“从物体”可能总是会发生碰撞,但只有当其他物体使用相同的机制或者碰撞永远不会发生在屏幕边界附近时,这才是正确的。
您可以将 3 个副本偏移场景大小的 +width、+height 和 +width+height,并根据主精灵位置重新计算每一帧的偏移量。当主精灵实际离开屏幕的一侧时,您将必须更改它的位置。例如,当主精灵离开屏幕右侧时,您将从其 x 位置减去(未设置!)场景大小的宽度。