2016-03-26 18 views
5

私は、私には本当にシンプルなものをやりたいと思っていました。ビューのバックグラウンド全体にエミッタを作っています...そして、ビューをaspectFillとScaleにできるようにし、エミッタ私が何をしても適切に見えるように...SKEmitterNodeのサイズを変更するには?

私はエミッタをスケールするだけではない。オブジェクトを正しいサイズにしたいが、エミッタの領域を変更したい。Photoshopの "キャンバスサイズ"(サイズ変更なし)オプションのように考える..

このエフェクトを使用する例えば、シーン全体に雪や雨を加えたり、スノーグローブスプライトを作成したりすることができます。

私はちょうどいい場所を探しているわけではありませんが、 SKEmitterNodeは読み込み専用です...何が間違っていますか?

ここにいくつかのコードがあります。エミッタは、ビューの中央にある小さな矩形です。

override func viewDidLoad() { 
    super.viewDidLoad() 

    if let scene = GameScene(fileNamed:"GameScene") { 
     // Configure the view. 
     let skView = self.view as! SKView 
     skView.showsFPS = true 
     skView.showsNodeCount = true 
     if let emitter = SKEmitterNode(fileNamed: "Bokeh") { 
      emitter.position = view.center 
      scene.addChild(emitter) 
     } 
     /* Sprite Kit applies additional optimizations to improve rendering performance */ 
     skView.ignoresSiblingOrder = true 

     /* Set the scale mode to scale to fit the window */ 
     scene.scaleMode = .AspectFill 
     skView.presentScene(scene) 
    } 
} 

もう少し明確にする必要があります。雪の場合は、パーティクルがシーンに入る前にインスタンス化され、シーンを通過して落ちてしまい、シーン内をランダムに表示されずに落ちてしまい、その後落ちてしまいます。私は雪がシーンの境界全体を占めるようにしたいと思う。 particlePositionRangeあなたが探していると呼ばれる

答えて

6

粒子の位置のために許可される乱数値の範囲。

emitterNode.particlePositionRange = CGVector(dx: dx, dy: dy) 

dxがあなたのエミッタの幅であるべき、とdy高さ:

あなたはこのようにそれを変更することができます。これはシーンのサイズになります(デフォルトでは、シーンのサイズは1024 x 768であり、これは異なって指定されていないことに注意してください)。

あなたがポジション範囲]セクションで値を変更することにより、パーティクルエディタを使用して行うことができます同じこと:

position range

+0

ので、私は、ビューの中央にエミッタを配置し、幅する範囲を設定しますと高さ?それはそれほど悪くはありません。 :-) –

+0

これは完全に働いていて、知っていて理解するのがとても嬉しいです:-)ありがとうございます! –

+0

もう一つの質問...雪のために、私はパーティクルを最初に表示するだけで、ビューの上にランダムに表示するのではなく、どうやって表示しますか? –

関連する問題