SpriteKit不尊重zPosition?

Spa*_*Dog 9 iphone ipad ios sprite-kit

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

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

sprite1.zPosition = 50;
sprite2.zPosition = 10;
sprite3.zPosition = 30;
Run Code Online (Sandbox Code Playgroud)

然后这样做

[self addChild:sprite1];
[self addChild:sprite2];
[self addChild:sprite3];
Run Code Online (Sandbox Code Playgroud)

根据SpriteKit并考虑zPosition顺序,sprite1应该通过sprite2渲染到sprite3上,但是spriteKit会忽略它,并且在2上渲染3超过2.

我错过了什么吗?

Dob*_*pir 13

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

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

  1. 父级在呈现其子级之前绘制其内容.
  2. 子项按它们在子数组中出现的顺序呈现.

考虑z位置时,以下是节点树的呈现方式:

  1. 计算每个节点的全局z位置.
  2. 节点按从最小z值到最大z值的顺序绘制.
  3. 如果两个节点共享相同的z值,则首先呈现祖先,并按子顺序呈现兄弟节点.

你可以找到它很好地解释这里下了解绘制顺序为节点树


Don*_*onn 5

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

let skView = self.view as SKView
skView.ignoresSiblingOrder = false
Run Code Online (Sandbox Code Playgroud)