2

スプライト キットで zPositiion を確立するために使用される enum に問題があります。列挙型は次のとおりです。

enum Layer:CGFloat {
   case Sky = 0
   case Clouds = 1
   case Background = 2
   case Foreground = 3
   case Character = 4
   case Foreground1 = 5
}

そして、追加の効果を含めるために、シーンをさまざまなレイヤーに分割しています。spriteKit ベース ノードとして worldNode を追加すると、その子は次のようになります。

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

何が起こっているのか理解できません。

4

1 に答える 1