如何将子SKSpriteNodes放在父母身上

时间:2015-10-13 09:31:18

标签: swift sprite-kit

我真的不了解定位子节点的逻辑。可以说我有一个矩形。如果我没有更改其锚点,则默认情况下子节点将恰好出现在中间。但是如何将它放在矩形的左上边缘呢?还是右下?我试过了

 child.zPosition = 1
 child.position.y = rect.size.height / 2   
 rect.addChild(child)

但它不是由Y轴定位在中间。它位于顶部。我应该使用哪些工具来定位父母内部/内部的子节点?

1 个答案:

答案 0 :(得分:17)

SpriteKit中的默认锚点是(0.5,0.5),它是节点/精灵的中心。 (0,0)是左下角,(1,1)是右上角。请看this picture

enter image description here

选择节点的锚点后,可以将其视为坐标系的原点,其范围是节点的帧大小。位置偏移量由孩子的锚点及其父点的锚点计算/影响。

例如,(红色)父节点rect的大小为(100,100),(绿色)子节点child的大小为(50,50)。在父级坐标系中将子位置设置为(-25,25)将得到以下结果。

// parent node
let parent = SKSpriteNode(color: UIColor.redColor(), size: CGSizeMake(100.0, 100.0))
parent.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame));
self.addChild(parent)

// child node
let child = SKSpriteNode(color: UIColor.greenColor(), size: CGSizeMake(50.0, 50.0))
child.zPosition = 1
child.position = CGPointMake(-parent.size.width/4, parent.size.height/4) // (-25, 25))
parent.addChild(child)

enter image description here

可以找到更多SpriteKit位置和锚点的实验here