繁体   English   中英

spriteKit 中的 enum 和 zPosition 问题

[英]enum and zPosition problems in spriteKit

我在 sprite Kit 中用于建立 zPositiion 的枚举有一些问题。 这是枚举:

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)

如您所见,greenCircle 是 backGroundMountainOver 的子代,而foreGroundMountainRight 是 worldNode 的子代。 我需要这个来实现我之前提到的效果。

问题是,尽管 foreGroundMountainRight 的 zPosition 比 greenCircle 的 zPosition 大,但最后一个出现在第一个之上。 解决问题的唯一方法是更改​​:

… case Foreground1 = 7

我不明白这是怎么回事。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM