スコアに基づいて自分のSKEmitterNode(雨粒)をオンとオフに切り替えることができます。しかし、私の更新関数は絶えず呼び出されています。つまり、私は現在のコードでスクリーン上に何百万もの粒子が残っています...スコアを達成したときに雨粒が一度しか呼び出されないようにするにはどうすればいいですか?SpriteKitを使用してスコアをオンにしてSKEmitterNodeを作成するにはどうすればよいですか?
class GameScene: SKScene, SKPhysicsContactDelegate {
func setUpRain() {
if let rainParticle = SKEmitterNode(fileNamed: "Rain") {
rainParticle.position = CGPointMake(frame.size.width, frame.size.height)
rainParticle.name = "rainParticle"
rainParticle.zPosition = Layer.Flash.rawValue
worldNode.addChild(rainParticle)
}
}
func makeItRain() {
let startRaining = SKAction.runBlock {
self.setUpRain()
}
runAction(startRaining, withKey: "Rain")
}
func stopRaining() {
removeActionForKey("Rain")
worldNode.enumerateChildNodesWithName("rainParticle", usingBlock: { node, stop in
node.removeFromParent()
})
}
}
class PlayingState: GKState {
unowned let scene: GameScene //used to gain access to our scene
override func updateWithDeltaTime(seconds: NSTimeInterval) {
scene.updateForegroundAndBackground()
scene.updateScore()
if scene.score > 2 {
scene.makeItRain()
}
if scene.score > 4 {
scene.stopRaining()
}
}
エミッタが一定数の粒子を放出するように設定します。エミッタを追加し、発光が終了するのを待って、親からそれを削除する 'SKAction'シーケンスを作ります...このようなもの:http://stackoverflow.com/a/31731439/3402095 'SKEmitterNode'はこれをセットアップするのに関係しています、私に教えてください。 – Whirlwind
ありがとう!簡単なレインシャワーの効果を出すためにEmitter(1)Birthrateと(2)Max and Lifetime(1)startと(2)Rangeをどのような値にするべきなのでしょうか? – GarySabo
私はあなたがすでにどのような特性が関連しているか知っているのを見ていますが、雨を降らす方法はあなたの仕事であり、あなたはそれを遊ばなければなりません。 :) – Whirlwind