Sprite-Kit:Sprite z-Order

iCo*_*ode 14 sprite-kit

如何在Sprite-Kit中更改Sprite的z顺序?

Cocos2d代码:

[parentNode addChild:sprite1 z:3];
[parentNode addChild:sprite2 z:2];
[parentNode addChild:sprite3 z:1];
Run Code Online (Sandbox Code Playgroud)

我在Sprite-Kit中尝试了下面的代码.但它没有改变z顺序

[parentNode insertChild:sprite1 atIndex:3];
[parentNode insertChild:sprite2 atIndex:2];
Run Code Online (Sandbox Code Playgroud)

Lea*_*s2D 30

对于绘制顺序,请使用zPosition节点的属性:

zPosition节点相对于其父节点的高度.

默认值为0.0.正z轴向观察者投射,使得具有较大z值的节点更靠近观察者.渲染节点树时,计算每个节点的高度(绝对坐标),然后树中的所有节点从最小z值渲染到最大z值.如果多个节点共享相同的z位置,则对这些节点进行排序,以便在子节点之前绘制父节点,并按照它们在父节点的子数组中出现的顺序呈现兄弟节点.命中测试以相反的顺序处理.

SKView类的ignoresSiblingOrder属性控制是否为同一z位置的节点启用节点排序.

您也可以使用insertChild:atIndex:来影响z顺序,但请记住,index是数组中对象的索引,而不是它zPosition(即atIndex参数与zcocos2d中的参数不同,实际上它是反向的).在较低索引处添加的节点将在具有较高索引的节点之前绘制.

另请注意,您不能在超出范围的索引处插入节点.来自NSMutableArray文档:

[..]您不能在大于当前数组计数的索引处插入对象.例如,如果一个数组包含两个对象,其大小为2,那么您可以在索引0,1或2处添加对象.索引3是非法的并且超出范围; 如果您尝试在索引3处添加对象(当数组的大小为2时),NSMutableArray会引发异常.