SpriteKit不尊重zPosition?

时间:2014-02-11 17:47:30

标签: ios iphone ipad sprite-kit

addChild和zPosition对场景有什么影响?

我的意思是:假设我这样做

sprite1.zPosition = 50;
sprite2.zPosition = 10;
sprite3.zPosition = 30;

以后再做这个

[self addChild:sprite1];
[self addChild:sprite2];
[self addChild:sprite3];

根据SpriteKit并考虑zPosition顺序,sprite1应该通过sprite2渲染到Sprite2上,但spriteKit会忽略它,并且在2上将3渲染为3。

我错过了什么吗?

2 个答案:

答案 0 :(得分:13)

如果他们有相同的父母,那将是真的。如果他们可以是不同的父母,也会考虑父母的z顺序。

场景渲染的标准行为遵循一对简单的规则:

  1. 父级在渲染其子级之前绘制其内容。
  2. 儿童按照他们在孩子身上出现的顺序进行渲染 阵列。
  3. 考虑z位置时,以下是节点树的渲染方式:

    1. 计算每个节点的全局z位置。
    2. 按照从最小z值到最大z值的顺序绘制节点。
    3. 如果两个节点共享相同的z值,则首先渲染祖先, 和兄弟姐妹按照孩子的顺序呈现。
    4. 您可以在了解节点树的绘制顺序

      下找到here

答案 1 :(得分:5)

在游戏视图控制器中,将ignoresSiblingOrder属性设置为false(或在Objective-C中为NO)。

let skView = self.view as SKView
skView.ignoresSiblingOrder = false