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