首页 > 解决方案 > 分组 SpriteKit 节点和 zPosition 控件

问题描述

我正在使用 SpriteKit。对于具有多个 SKSpriteNode 部分的字符,我想控制每个字符的节点重叠。

例如,字符由音符和部分顺序组成,如下所示。由于addChild是从上往下依次完成,所以头部在外观上显示在最上面(因为偶尔会塌陷,是zPosition强制的)

Body (z = 100)
    Leg (z = +1)
    Hand (z = +2)
    Head (z = +3)

如果它与其他字符重叠,我们将对其进行处理,以便在下面的 2D 屏幕上有一个深度。

HumanA.zPosition = -humanA.position.y
HumanB.zPosition = -humanB.position.y

在 , 的情况下humanA.position.y=-101humanB.position.y=-100humanB 在 humanA 之前。但是humanA的头部(z = -98)在humanB的腿之前(z = -99)。

理想情况下,如果humanB在humanA之前,我想让humanB的所有部分都在humanA之前。

请帮我。

参考站点 https://developer.apple.com/documentation/spritekit/sknode

谢谢你。

标签: swiftswift4

解决方案


只需将 y 位置乘以人体部位的数量:4

HumanA.zPosition = -humanA.position.y * 4
HumanB.zPosition = -humanB.position.y * 4

这边走:

  • 人体可能有以下 z 位置:0, 4, 8, 12, 16, ...
  • 人的腿可能有以下 z 位置:1, 5, 9, 13, 17, ...
  • 人的手可能有以下 z 位置:2、6、10、14、18、...
  • 人头可能有以下 z 位置:3, 7, 11, 15, 19, ...

因此,一个人的整个部分将始终以相同的深度显示。


推荐阅读