SKSpriteNodeChild 在错误的 zPosition

SKSpriteNodeChild in the wrong zPosition

我将两个 SKSpriteNode 添加为 children 到另一个 SKSpriteNode。代码如下所示:

let parentNode = SKSpriteNode(imageNamed: "ParentImage")
parentNode.position = CGPointMake(0,0)
parentNode.zPosition = 0
let child1 = SKSpriteNode(imageNamed: "ChildImage1")
child1.position = CGPointMake(0,0)
parentNode.addChild(child1)
child1.zPosition = -10
let child2 = SKSpriteNode(imageNamed: "ChildImage2")
child2.position = CGPointMake(0,0)
parentNode.addChild(child2)
child2.zPosition = 10

当我将父节点添加到我的场景时,z-plane 中精灵的顺序从 back-to-front 开始是

有时,预期的

当 child 在父节点下方时,zPosition 属性 是否得到 over-ruled?有没有人遇到过这样的错误或知道修复方法?

在 GameViewController 中,skView.ignoresSiblingOrder = true 当我将它设置为 false 时,我每次都会得到第一个行为 (parentNode, child1, child2)。

我建议添加一个充当容器的节点,然后将其他三个节点添加为该节点的子节点。这样,您的三个节点就像兄弟姐妹一样,如果需要,您可以重新排列它们 zPosition.

问题已解决。当我尝试了一些事情时,我不能 100% 确定是什么解决了它。我将 ignoresSiblingOrder 设置为 false 然后返回 true,将出现在顶部的 childNode 的定义移动到与父节点相同的函数中,最后(我怀疑这是修复的原因),移动了顺序addChild 并设置 zPosition(在我的项目中,顺序最初是 child1.zPositionparentNode.addChild;更改这两个的顺序可能解决了问题,因为我怀疑后续的兄弟顺序混淆了 zPosition)。