将SpriteKit节点和zPosition控件分组

时间:2018-08-03 21:38:31

标签: swift swift4

我正在使用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=-100,humanB在humanA之前。但是,humanA的头(z = -98)在humanB的腿(z = -99)之前。

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

请帮助我。

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

谢谢。

1 个答案:

答案 0 :(得分:0)

将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,...

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