我对SpriteKit中的anchorpoint感到非常困惑。
如果我有一个由多个子节点组成的节点,并且我更改了节点的锚点,那么所有的子节点都会被放错地方。有没有办法解决这个问题?
我认为如果我总是使用默认的锚点(0.5,0.5),定位节点真的很烦人,所以有时我会将锚点更改为1.0,0.0,因此它很容易放在右下角。但是如果这个节点有子节点,那么当我改变锚点时它们都是错位的。
我错过了什么?
答案 0 :(得分:5)
在您的情况下(一般而言)修复相对容易。不是将子节点添加到其anchorPoint已更改的sprite节点,而是使用公共父节点(SKNode)。将精灵节点添加到父节点,更改精灵的anchorPoint但不添加任何子节点。而是将这些子项添加到父节点。然后,您可以使用父节点将节点树的此分支放在一起。
或者使用允许您将节点与特定边框对齐的方法创建SKSpriteNode(或类别)的子类,同时考虑精灵的帧大小和anchorPoint。例如,您可以添加两个属性verticalAlign和horizontalAlign,其中心,左/上和右/下对齐。每当更改position属性时,该点在传递给super setPosition之前都会被偏移,以便遵循对齐模式。