gpt4 book ai didi

swift - 如何将不同高度的 Sprite 锚定到相同的 Y 位置

转载 作者:行者123 更新时间:2023-11-28 06:28:39 24 4
gpt4 key购买 nike

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

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

但是我的另一个 Sprite 的尺寸略有不同,为了让他看起来像站在同一层楼上,我必须将他放在

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

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

例如,无论 Sprite 的高度如何,如果我将 Y 设置为 200,他们的脚将始终位于 Y 200,并且他们的 body 将从那里向上生长

最佳答案

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

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

它也是 Sprite 在您设置其位置值时用于确定其定位位置的父项(大概是场景)中的点。

这个 anchor 在从左下角到右上角的坐标系中用 0 和 1 表示。

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

大多数 Sprite 默认 anchor 为 (0.5, 0.5),也就是中间。

您的定位通过对象的高度量补偿这个中间 anchor ,这就是您如何让它们到达场景中相同的 y 位置(在它们的底部)。

您可以在放置对象时以数学方式(或手动方式)补偿对象的高度,或者将 anchor 设置到 Sprite 的底部。两者会达到同样的效果。

例如。将 anchor 设置为 (0.5, 0),您的 Sprite 将锚定在底部中间。对您的所有 Sprite 执行此操作,您可以为它们赋予相同的 y 位置值,并且它们都将停留在该“地板”上,而不管它们的高度如何。

这是对此及其影响和可能性的彻底分割:

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

关于swift - 如何将不同高度的 Sprite 锚定到相同的 Y 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41024871/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com