physicsBody与spriteNode不对齐

时间:2014-01-20 19:17:15

标签: ios objective-c sprite-kit skspritenode skphysicsbody

我正在创建一个spritenode,设置它的位置并将其anchorpoint更改为(0,.5),然后创建一个phyicsbody。

物理学家认为我的锚点仍然是(.5,.5),愚蠢。

这里引用了同样的问题,但未解决:Physicsbody doesn't adhere to node's anchor point

我正在做的事情的顺序是正确的,这只是我的物理学家固执。

1 个答案:

答案 0 :(得分:4)

anchorPoint确定相对于节点位置绘制节点纹理的位置。它只是不影响物理实体,因为它是一个纯粹的视觉属性(纹理偏移)。

对于物理驱动的节点,将anchorPoint从其默认值更改实际上会产生反效果,因为这将改变纹理将围绕其旋转的点。物理体通常也会改变节点的旋转。

因此,即使你要移动物理体形状的顶点以匹配具有修改的anchorPoint的精灵,一旦身体开始旋转,物理形状将与图像不对齐。而且它似乎表现得很奇怪。

无论您想使用anchorPoint实现什么,您都可以通过使用节点层次结构来更灵活地实现。使用SKNode作为物理节点,并将非物理精灵节点作为子节点添加到该节点,并通过更改精灵的anchorPoint以您希望图像偏移的方式偏移它。

你最终有两个节点,一个是不可见的,代表物理身体,一个(或多个)精灵代表身体的视觉效果,但不一定与身体的中心位置相关联。