2016-09-17 12 views
4

これはかなり基本的な質問です(swiftとspritekitの新機能です)。 とにかく、パーティクルエミッタをスプライトノードに追加して(ボールと呼ぶ)、ボールを自分のシーンに追加します。このボールは背景を表す別のスプライトノードの上にあります。アプリケーションを実行すると、ボールは正常に表示されますが、パーティクルエミッタは表示されません。エミッタは、バックグラウンドを削除するときれいに表示されますが、バックグラウンドを追加すると表示されません。私はコード例を投稿します...パーティクルエミッタが画像上に表示されない(スピーディなスプライトキット)

//Background 
let background = SKSpriteNode(imageNamed:"Background") 
background.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame)) 
background.zPosition = 0 
self.addChild(background) 

//Ball 
let ball = SKSpriteNode(imageNamed: "ball") 
ball.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame)) 
ball.zPosition = 1 
ball.physicsBody = SKPhysicsBody(rectangleOfSize: ball.frame.size) 
ball.physicsBody?.usesPreciseCollisionDetection = true 


//Emitter 
let emitter = SKEmitterNode(fileNamed: "emitter") 
emitter.targetNode = self 

ball.addChild(emitter) 

self.addChild(ball) 

私が言ったように、これはかなり基本的な質問であるようです。私は間違って何をしているのか分かりません。これを繰り返すと、エミッタは表示されません。しかし、バックグラウンドを取り除くと、エミッタが表示されます。ヘルプについて

感謝:)

+1

エミッタの 'zPosition'をバックグラウンドよりも高い数値に設定して、エミッタが上部に表示されるようにしてください。 'emitter.zPosition = 2' –

答えて

1

シンプルな答え - あなただけの背景の(しかし、ボール未満)よりも高くするためにあなたのエミッタのZPOSITIONを設定する必要があります。 zPositionは、物がレンダリングされる順序を決定し、後でレンダリングされる番号を高くする(したがって、上に置く)。

エミッタノードと背景が同じ色で表示されているように見えることもあります。

1

私はエミッタのzPositionを変更しようとしましたが、何も変更されませんでした。しかし、バックグラウンドのz位置を-1に変更すると、エミッタが表示されました。私はなぜこのことがうまくいくのか知りたがっています。しかし、提案ありがとう:)

+0

Appleがドキュメンテーション、サンプル、デモ、および指示にお金を費やしてくれたなら、うれしい。参照資料はせいぜい疎です。 – Confused

0

私は同じことが起こったが、あなたがバックグラウンドをコメントアウトするときに発生しないと言ったとき、私はGameViewControllerにfalseを設定するコマンドがあることを思い出しました。 skView.ignoresSiblingOrder = false

関連する問題