如何将不同高度的精灵锚定到相同的Y位置

时间:2016-12-07 18:36:47

标签: swift sprite-kit skspritenode

我有多个不同高度的精灵,但我希望他们看起来都像是站在同一个楼层(y位置)。例如,为了让我的第一个精灵看起来像他站在地板上我必须把他放在

CGPoint(x: self.frame.midX, y: 200)

但我的另一个精灵,身材略有不同,为了让他看起来像他站在同一个楼层我必须把他放在

CGPoint(x: self.frame.midX, y: 150)

是否可以将不同大小的精灵锚定到同一个y位置?就像将精灵的底部锚定在地板上一样,无论精灵有多大或多小,底部总是处于相同的y值?

所以例如无论精灵的高度如何,如果我将Y设置为200,他们的脚总是在Y为200,他们的身体将从那里向上生长

1 个答案:

答案 0 :(得分:1)

如果您正在使用SKSpriteNodes,是的,有一种简单的方法可以做到这一点。

每个SKSpriteNode都有一个名为"anchor point"的属性。在设计方面,这是原点,即物体旋转的点。

它也是父母(可能是场景)中的一个点,用于确定当你设置其位置值时它所处的位置。

此锚点以0到1和1的形式表示,位于左下角到右上角的坐标系中。

即(0,0)的锚点是任何SKSpriteNode的左下角,而(1,1)是右上角。

大多数精灵默认为锚点(0.5,0.5),这是中间的。

您的定位是根据物体中的高度来补偿此中间锚点,以及您如何将它们置于场景中相同的y位置(在其底部)。 / p>

您可以通过数学方式(或手动,按原样)放置对象的高度,或将锚点设置为精灵的底部。两者都会达到同样的效果。

例如。设置一个锚点(0.5,0),你的精灵锚定在底部中间。对你所有的精灵这样做,你可以给他们相同的y位置值,并且他们都会在那个"地板"上休息,无论他们的身高如何。

以下是对此的彻底细分及其含义和可能性:

http://www.garethelms.org/2014/06/help-with-spritekit-position-and-anchorpoint/