gpt4 book ai didi

swift - SpriteKit Sprite 在节点树中的位置

转载 作者:行者123 更新时间:2023-11-30 10:35:36 25 4
gpt4 key购买 nike

目前正在开发一个简单的 2D 游戏,其中我的玩家角色被分成多个 Sprite (头、躯干、腿、 ARM ……)。我在 Aseprite 中有绝对坐标(如果我获取单个 Sprite 并定位它们,我会得到正确的坐标)。

当我将所有内容放入 swift 并使用负 y 而不是正值时,一切都变得非常奇怪。例如,在 Aseprite 中,我的坐标如下:头 (30, 17)、躯干 (30, 24) 和腿 (28, 35)。一切都完美地对齐。

在 SpriteKit 中,我扩展了 SKNode 类,并将每个子 Sprite 放入其中,y 为负数。所以我没有向上,而是向下。看起来以像素为单位的坐标不正确 - Sprite 有几个像素的偏差。大多数情况下是偏离 y 坐标,但在某些情况下(字符旋转)也偏离 x 坐标。

那么如何从这些绝对左上角坐标得到正确的 SpriteKit 坐标呢?

最佳答案

好吧,我发现出了什么问题(有几件事):

  • 您的父类可以是 SKNode,但子类必须将 anchor 设置在 (0,1)
  • 更改子 Sprite 的纹理时,请始终确保将 Sprite 大小设置为新的纹理大小。如果不是,它将使用以前的纹理大小并将新纹理调整为旧大小。这引入了额外的定位问题。所以你必须调用:child.size = child.texture!.size()(我使用了强制展开,因为我在前一步设置了(新)纹理,所以我 100% 确定它存在。
  • 当设置新纹理时再次设置 anchor (似乎在更改子 Sprite 的纹理时会重置)。

关于swift - SpriteKit Sprite 在节点树中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58122086/

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