Sprite kit SKSpriteNodeChild处于错误的位置

Sprite kit SKSpriteNodeChild处于错误的位置,sprite-kit,swift2,zposition,Sprite Kit,Swift2,Zposition,我在另一个SKSpriteNode中添加了两个作为孩子的SKSpriteNode。代码如下所示: let parentNode = SKSpriteNode(imageNamed: "ParentImage") parentNode.position = CGPointMake(0,0) parentNode.zPosition = 0 let child1 = SKSpriteNode(imageNamed: "ChildImage1") child1.position = CGPointMa

我在另一个SKSpriteNode中添加了两个作为孩子的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
将parentNode添加到场景中时,z平面中精灵的顺序是从后向前

  • 父节点
  • 孩子1
  • 孩子2
有时,预期的结果

  • 孩子1
  • 父节点
  • 孩子2
当一个子节点低于parentNode时,zPosition属性是否被忽略?有没有人遇到过这样的错误或知道修复方法

在GameViewController中,
skView.ignoresSiblingOrder=true

当我将其设置为
false
时,每次都会得到第一个行为(parentNode、child1、child2)。

我建议添加一个充当容器的节点,然后添加其他三个节点作为该节点的子节点。这样,您的三个节点就可以充当兄弟节点,如果需要,您可以使用它们的
zPosition

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

@ShaneOSeasnain我尝试运行了几次代码(在模拟器和设备上)而且我不能说出你说的话(我总是得到child1、parentNode、child2),我使用的是iOS 9.1和Xcode 7.1.1