Enums spriteKit中的enum和zPosition问题

Enums spriteKit中的enum和zPosition问题,enums,sprite-kit,zposition,Enums,Sprite Kit,Zposition,我在雪碧套件中用于建立Zposition的枚举中遇到一些问题。以下是枚举: enum Layer:CGFloat { case Sky = 0 case Clouds = 1 case Background = 2 case Foreground = 3 case Character = 4 case Foreground1 = 5 } 然后我将我的场景划分为不同的层,以包含额外的效果。我添加了worldNode作为spriteKit基础节点,然后它们的子节

我在雪碧套件中用于建立Zposition的枚举中遇到一些问题。以下是枚举:

enum Layer:CGFloat {
   case Sky = 0
   case Clouds = 1
   case Background = 2
   case Foreground = 3
   case Character = 4
   case Foreground1 = 5
}
然后我将我的场景划分为不同的层,以包含额外的效果。我添加了worldNode作为spriteKit基础节点,然后它们的子节点如下:

let backGroundMountain = SKSpriteNode(imageNamed: "Scene3BackgroundMountain1")
  backGroundMountain.zPosition = Layer.Background.rawValue
  worldNode.addChild(backGroundMountain)

let backGroundMountainOver = SKSpriteNode(imageNamed: "Scene3BackgroundMountainOver1")
  backGroundMountainOver.zPosition = Layer.Foreground.rawValue
  worldNode.addChild(backGroundMountainOver)

let greenCircle = SKSpriteNode(imageNamed: "green_circle_1")
  greenCircle.zPosition = Layer.Character.rawValue
  backGroundMountainOver.addChild(greenCircle)

let foreGroundMountainRight = SKSpriteNode(imageNamed: "Scene3FrontMountain1")
  foreGroundMountainRight.zPosition = Layer.Foreground1.rawValue
  worldNode.addChild(foreGroundMountainRight)
正如你所看到的,绿圈是backGroundMountainOver的子代,而ForeggroundMountainRight是worldNode的子代。我需要这个来达到我之前提到的效果

问题是,尽管前山的zPosition比绿圈的zPosition大,但最后一个出现在第一个上面。解决问题的唯一方法是改变:

… case Foreground1 = 7

我不明白这是怎么回事。

之所以会发生这种情况,是因为您在一个已经在zIndex=3(backGroundMountainOver)中的节点上添加了greenCircle节点(zIndex 4),总共给出了zIndex 7。当连接到世界节点(我假设默认zIndex=0)的foreGroundMountainRight位于zIndex=5时。

非常感谢。这就是为什么。当你有孩子的时候,我不知道如何加一个。