我有很多不同的 Sprite 节点,它们的物理体与对象的大小相同。对于定位,我需要更改节点的 anchor ,但这也会更改物理体的位置。有没有办法让物理体的 anchor 保持居中?为物理体使用路径是不行的,因为我有很多不同的对象。
最佳答案
anchorPoint
是一个纯粹的视觉属性,它定义了如何相对于节点的位置绘制纹理。更改 anchorPoint
不会影响物理体,它仍然以节点的 position
为中心。
所以从某种意义上说,物理体 确实 已经保持在 Sprite 位置的中心。通过更改 anchor ,您只是更改了 Sprite 纹理的显示位置,我相信您假设物理体将以 Sprite 的 anchor 为中心。它不是,因为每个节点都可以有一个物理体,但只有少数节点( Sprite 、场景、视频)具有 anchor 属性。
解决此问题的最佳方法是创建您的 Sprite 图像,以便始终假定物理体以图像为中心。在图像周围留下透明边框,以确保图像大小始终相同并且 body 的位置正确居中。
您还可以使用 SKPhysicsBody bodyWithRectangleOfSize:center:
初始值设定项来定义主体的中心点并将其与 Sprite 的 anchor 匹配。但这很棘手且适得其反,因为即使进行最小的更改,您也必须不断重新调整 body 和 sprite anchorPoint。
除此之外,最好不要理会 anchor ,尤其是物理。
关于objective-c - Sprite Kit 更改 anchor 但保持物理体居中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22095389/