チュートリアル: 表現強化コース #1 パーティクルを使おう。

こちらは、まずは色々な表現を使ってみたい!という人向けのチュートリアルコースです。
このチュートリアルコースを受講する前に、

を完了することをおすすめします。

なお、このコースでは、最初のチュートリアルで利用したプロジェクトを引き続き使用しますので、削除してしまった方は改めてチュートリアル開始よりチュートリアルプロジェクトをご用意ください。

STEP1: パーティクルオブジェクトを作ろう

  1. シーンタブで+を押して新しいシーンタブを作り、ゲームオブジェクトを作成します。
  2. 作成画面が開きますので、以下のように設定してください。
    名前: 任意(ここではtest_particleとします。)
    テンプレート: particles
    タイプ: Empty
  3. 作成したら、シーンタブを右クリックして保存を選択するか、Ctrl+Sのショートカットを使って保存しておきましょう。

    4.ここで作成されたParticleObjectノードは、ヴィジュアルスクリプトでパーティクルを扱うための専用ノードになっています。シーンウィンドウでParticleObjectノードを選択してください。
  4. 右側のインスペクターウィンドウの、Particle Template IDを選択してください。様々なプリセットのパーティクルが設定されています。
  5. 色々切り替えて試してみましょう。なお、このテンプレート変更は今存在するノードを全て上書きしてしまうので自作パーティクルを追加した後は触らないようにしましょう。 試し終わったらNONEに戻して子ノードがなにもない状態に戻しましょう。
  6. シーンウィンドウ左上の+ボタンをクリックしてください。
  7. GPUParticles2Dノードを追加してください。
  8. これで準備は完了です。次のSTEPではパーティクルの基礎的な自作方法を解説します。

解説

CPUParticlesとGPUParticles
同じようなノードが2つありますが違いはなんでしょうか。
これはシンプルに、処理にCPUを使うか、GPU(グラフィックプロセッサ)を使うかという違いです。
正しくは、自分のゲームではどのような処理が重たいのか?を判断して使い分けるものですが、グラフィック処理が浮きがちな2Dゲームであれば通常はGPUParticlesを利用するのが良いでしょう。

STEP2: GPU Particlesの設定

  1. STEP1で作成したGPU Particles2Dノードを選択してインスペクターウィンドウを見てください。
  2. Process Materialの<空>をクリックしてNew ParticleProcessMaterialを選択します。
  3. 中央のウィンドウを見てください。拡大すると・・・小さいドットが下に向かって落ちていっているはずです。これは重力が効いているためです。分かりづらいので一旦重力加速度を0にしましょう。
  4. ParticleProcessMaterialをクリックして展開してください。Accelerations>GravityRateにあるyを98から0に変更しましょう。重力が無効になり、落下しなくなります。
  5. GodotのParticleシステムは非常に高度で沢山の設定項目があります、ここではもっとも基礎的な部分だけを確認します。"Spawn"以外のメニューは一旦忘れてください。
  6. まずはSpawn>Positionです。これは、発生範囲を変更するものです。以下のように設定してみましょう。
    Emission Shape Scale: x30 y30
    Emission Shape: Sphere
    半径30センチの円形内にドットが出現するようになるはずです。
  7. 次の設定のAngleは特殊な設定なので飛ばします。
  8. Spawn>Velocityはパーティクルの放出先や速度を設定するものです。試しにInitial Velocityのminを10、maxを100にしてみましょう。右方向の45度の角度に向かって10~100の速度で移動するようになるはずです。
  9. 方向をy:1 Spreadを30にしてみましょう。今度は下方向に30度の角度で放出されます。
  10. このSpawn以外の設定はこのパーティクルの動きを複雑にしていくものです。用途に応じて追加していくことになります。一旦プロセスマテリアルは閉じて、それ以外の基本的なメニューを試しましょう。
  11. インスペクター上部のMax Amountを8から16に変更してみましょう。これはパーティクルの数を設定するもので、数が倍になるはずです。

    12.Time>Lifetimeを1から0.3に変更してみましょう。これはパーティクルの持続時間を示します。消滅すると同時に新しいパーティクルが生成されるため、激しい動きになるはずです。
  12. OneShotをオンにしてみましょう。パーティクルの表示が止まってしまうのでEmittingのチェックボックスをオンにしてください。OneShotはその名の通りパーティクルを一度だけ放出し、再生成しません。Emittingはパーティクル生成状態のオン/オフを切り替えるものなので、OneShotがオンの場合は、パーティクルの持続時間の間だけオンになり自動でオフになります。
  13. Timeに戻り、Explosivenessを0から1にしてみましょう。これはその名の通り爆発のようなパーティクルを作成するためのオプションで、持続的にパーティクルを放出するのではなく、一瞬で全てのパーティクルを放出するようになります。
  14. 最後はテクスチャーです。サンプルのテクスチャをつけてみましょう。ファイルシステムウィンドウの、templates>objects>items>I_othersにある好きな画像をテクスチャーにドラッグ&ドロップしましょう。
  15. ドットがテクスチャーの画像に変わりました。

    次のチュートリアルはこちら
    チュートリアル: 表現強化コース #2 光と影を使おう。

もっと調整したい人向けのアイデア。

テクスチャーが全て同じ角度なのでバラバラにしたい。
先ほどスキップしたProcessMaterialのSpawn>Angleを変更すれば初期角度をバラバラにすることができます。
加速をつけたい
ProcessMaterialのAccelerationsメニューで加速を調整できます。線形方向(Linear)、中心から放出(Radical)、円運動(Tangential)等の加速度を設定できます。
動きに変化をつけたい
ProcessMaterialのAnimatedVelocityで角度や方向、円運動等の動きを変化させることができます。
見た目に変化をつけたい
ProcessMaterialのDisplayメニューで、サイズやカラー、アニメーション等を設定できます。

ここで解説した機能はGodotの2Dparticleシステムのほんの基礎的なものだけです、より詳しくは以下の公式ドキュメントをご確認ください。