如何将子 SKSpriteNode 放置在其父级内部

2024-02-12

我不太明白定位子节点的逻辑。假设我有一个矩形。如果我没有改变它的锚点,子节点默认会出现在中间。但例如如何将其放置在矩形的左上角呢?还是右下角?我试过

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

但它没有被Y轴定位在中间。它在上面的某个地方。我应该使用什么工具来定位子节点关于其父节点/在其父节点内部的位置?


SpriteKit 中的默认锚点是 (0.5, 0.5),它是节点/精灵的中心。 (0, 0) 是左下角,(1, 1) 是右上角。看着这张照片 https://developer.apple.com/library/ios/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Sprites/Sprites.html#//apple_ref/doc/uid/TP40013043-CH9-SW36.

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

例如,(红色)父节点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)

更多SpriteKit位置和锚点的实验可以找到here http://www.garethelms.org/2014/06/help-with-spritekit-position-and-anchorpoint/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将子 SKSpriteNode 放置在其父级内部 的相关文章

随机推荐