SpriteKit not respecting zPosition?

ios, ipad, iphone, sprite-kit

Solution

If they have the same parent that would be true. In case they can different parents, the z order of parents is also taken into account.

The standard behavior for scene rendering follows a simple pair of rules:

- A parent draws its content before rendering its children.

- Children are rendered in the order in which they appear in the child array.

When you take z positions into account, here is how the node tree is rendered:

- Each node’s global z position is calculated.

- Nodes are drawn in order from smallest z value to largest z value.

- If two nodes share the same z value, ancestors are rendered first, and siblings are rendered in child order.

You can find it well explained here under Understanding the Drawing Order for a Node Tree

Problem

What effect addChild and zPosition really have on a scene? I mean this: suppose I do this ``` sprite1.zPosition = 50; sprite2.zPosition = 10; sprite3.zPosition = 30; ``` and later do this ``` [self addChild:sprite1]; [self addChild:sprite2]; [self addChild:sprite3]; ``` according to SpriteKit and considering zPosition order, sprite1 should be rendered over sprite3 over sprite2 but spriteKit ignores that and renders 3 over 2 over 1. am I missing something?

Original source