max*_*hud 5 objective-c ios sprite-kit skphysicsbody skspritenode
我正在创建一个 spritenode,设置它的位置并将其锚点更改为 (0, .5),然后创建一个 phyicsbody。
物理体认为我的锚点仍然在 (.5, .5) 上,这很愚蠢。
此处引用了相同的问题,但未解决:Physicsbody 不遵守节点的锚点
我做事的顺序是正确的,只是我的物理身体很顽固。
anchorPoint 确定节点的纹理相对于节点的位置绘制的位置。它根本不会影响物理体,因为它是一个纯粹的视觉属性(纹理偏移)。
对于物理驱动的节点,从默认值更改锚点实际上会适得其反,因为这将更改纹理将围绕其旋转的点。并且物理体通常也会改变节点的旋转。
因此,即使您要移动物理身体形状的顶点以匹配具有修改后的锚点的精灵,一旦身体开始旋转,物理形状就会与图像错位。而且它的行为似乎很奇怪。
此外,无论您想使用 anchorPoint 实现什么,您都可以通过使用节点层次结构来更灵活地实现您的优势。使用 SKNode 作为物理节点,并添加一个非物理精灵节点作为该节点的子节点,并通过更改精灵的锚点以您希望图像偏移的方式对其进行偏移。
你最终有两个节点,一个不可见的代表物理身体,一个(或多个)精灵代表身体的视觉效果,但不一定与身体的中心位置相关联。