objective-c – Sprite Kit改变了锚点,但保持物理中心

我有很多不同的sprite节点与物理大小相同的对象.为了定位,我需要更改节点的锚点,但这也改变了物理学家的位置.有没有办法保持物理中心的锚点?使用物理学的路径是不可能的,因为我有这么多不同的对象.

解决方法

anchorPoint是一个纯粹的视觉属性,它定义了纹理如何相对于节点的位置绘制.物理机构不受改变anchorPoint的影响,它保持以节点的位置为中心.

所以从某种意义上讲,物理学家的确保持着精灵的位置.通过更改anchorPoint,您只需更改sprite纹理的显示位置,我相信您假设物理体将以Sprite的anchorPoint为中心.它不是,因为一个节点可以有一个物理体,但只有很少的节点(精灵,场景,视频)有一个anchorPoint属性.

解决这个问题的最好方法是创建你的精灵图像,以便物理体总被认为是以图像为中心.在图像周围留出透明边框,以确保图像大小始终相同,并且正确定位身体的位置.

您也可以使用SKPhysicsBody bodyWithRectangleOfSize:center:initializer来定义身体的中心点,并将其与sprite的anchorPoint进行匹配.但这是棘手的和适得其反的,因为如果你做出最小的变化,你将不得不不断地调整bodyPoint和sprite.

除此之外,最好离开anchorPoint,特别是物理学.

相关文章

首先GDB是类unix系统下一个优秀的调试工具, 当然作为debug代...
1. C语言定义1个数组的时候, 必须同时指定它的长度.例如:int...
C++的auto关键字在C+⬑新标准出来之前基本...
const关键字是用于定义一个不该被改变的对象,它的作用是告诉...
文章浏览阅读315次。之前用C语言编过链表,这几天突然想用C+...
文章浏览阅读219次。碰到问题就要记录下来,防止遗忘吧。文章...