SpriteKit不尊重zPosition?

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

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

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

然后这样做

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

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

我错过了什么吗?

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

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

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

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

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

您可以在了解节点树的绘制顺序下找到它

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

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