Unity:パーティクルシステム

画像






粒子系は塩のようなものです。少量でも、今後の料理にスタイルを追加できます。 パーティクルシステムを使用しない最新のゲームは、かなり青白く見えます。



過去には、私たちは自分でそれぞれの煙をプログラムしなければなりませんでした。 幸いなことに、Unity Shurikenは組み込みのモジュラーパーティクルシステムにより、パーティクルの作成を非常に簡単なタスクにします。 このパーティクルシステムは簡単に習得でき、複雑な効果を作成できます。



このチュートリアルでは、次のことを学びます。





このチュートリアルは、2つの主要部分で構成されています。最初の部分ではトーチの炎を作成し、2番目の部分では爆弾の爆発の効果を作成します。



注:このチュートリアルは、Unityの基本的な操作に精通していることを前提としています。 Unityを初めて使用する場合、または知識を磨く必要がある場合は、まずUnityの概要チュートリアルをご覧ください。


パーティクルシステムの使用を開始する



このチュートリアルドラフトをダウンロードして、自分の都合の良い場所に解凍します。 チュートリアルを使用するには、少なくともUnity 2017.2が必要です。



Unityでスタータープロジェクトを開きます。 内部のアセットは、いくつかのフォルダーに分散されています。





何がどこにあるかを扱ったので、Unityでのパーティクルシステムの動作の研究を開始できます。



パーティクルシステムの追加



一般的な場合、粒子のシステムは、所定の空間内のランダムな点で粒子を放出します。この点は、たとえば球または円錐の形をとることがあります。 システムは粒子自体の寿命を決定し、終了するとシステムは粒子を破壊します。



パーティクルシステムは、シーン内の任意のGameObjectに追加できるコンポーネントであるという点で便利です。 サメの目からレーザービームを出したいですか? GameObjectのサメの目にパーティクルシステムを追加するだけです!



プロジェクトウィンドウでトーチシーンを開き、シーンを実行します。









これまでのところ、ここでは興味深いことは何も起きていません。 トーチは壁に掛かっていますが、火は見えません。 まず、パーティクルシステムを追加する必要があります。



シーンを停止し、階層でTorchFireParticlesを選択します。 インスペクタで、[ コンポーネント追加 ]ボタンをクリックします。 パーティクルシステムを見つけてクリックして追加します。









注:パーティクルシステムをGameObject MedievalTorchに直接追加しなかったことにお気づきかもしれません。 燃料はトーチの中央からではなく、上部にある燃料タンクから放出されました。


シーンを実行すると、パーティクルがすでに放出されていることがわかります。



GIF






注:白ではなくピンクの粒子を見ることができます。 これはデフォルトのテクスチャを設定するUnityのバグのようです。 これがあなたに起こった場合、心配しないで、すぐに正しい炎のテクスチャを設定します。 このバグを今すぐ修正する場合は、パーティクルシステムのレンダラーセクションをクリックし、 マテリアルフィールドの横のポイントをクリックして、開いたウィンドウでDefault-Particleをダブルクリックします。









パーティクルシステムがアタッチされたGameObjectを選択すると、シーンウィンドウの右下隅に黒いダイアログボックスが表示されます。 このダイアログボックスでは、パーティクルシステムをシミュレートまたは停止できます。 Simulateボタンを押すと、パーティクルシステムがアクティブになり、「一時停止」ボタンに置​​き換えられます。 シミュレーションを停止するには、「停止」ボタンをクリックします。









このダイアログボックスは、爆発など、限られた期間だけ実行されるパーティクルシステムを作成するときに役立ちます。



パーティクルシステムをより詳細に検討してください。



インスペクターを見てください。 弊社が追加したパーティクルシステムコンポーネントには、いくつかのサブセクションがあります。









これらの各サブセクションはModuleと呼ばれます。 これらのモジュールには、パーティクルシステムのパラメーターが含まれています。 デフォルトでデプロイされるモジュールは、 メインモジュールと呼ばれます。









Mainモジュールは、Unityのパーティクルシステムの基盤です。 最も基本的なパーティクルパラメータは次のとおりです。





注:パーティクルシステムのパラメーターを変更すると、ゲームウィンドウに予備的な概要が表示されます。 チュートリアルを完了する際に、この予備レビューをご覧ください。


シーンを実行して、変更がどのように影響するかを確認します。



GIF






トーチを設置しましたが、これまでの火災の影響にはまだ多くのことが望まれています。 幸いなことに、メインモジュールにはトーチの形状と動作を改善する追加オプションがあります。



メインモジュールの他のプロパティ



階層で、 GameObject TorchFireParticlesを選択し、パーティクルシステムまで下にスクロールします。 メインモジュールで、次のプロパティを確認します。





うわー、それがリストです! しかしその結果、パーティクルシステムをシーンに追加し、好みに合わせてカスタマイズする方法を学びました。



シーンを再度実行して、変更による影響を確認します。



GIF






炎のようになるたびに



ただし、より多くのパーティクルが必要です。 これを行うには、 排出システムを変更する必要があります。



放出モジュールの紹介



放出モジュールは、システム内で放出される粒子の数と時間を制御し、一定の流れから粒子の急激な爆発まで、あらゆる効果を作成できます。



パーティクルシステムのインスペクターで、Emissionモジュールのタイトルをクリックします。









これにより、Emissionモジュールが開きます。









時間経過率は、1秒あたりに放出されるパーティクルの数を表します。 Rate over Time15に設定します。



シーンを再度実行します。 これで、パーティクルシステムは燃える炎のように見えます。



GIF






しかし、それはまだ煙のようです。 そしてここで、チュートリアルの現在の段階で最大の変更を行います:私たち自身のテクスチャ!



独自のテクスチャを追加する



すべてのパーティクルには、パーティクルマテリアルと、外観を定義するテクスチャがあります。 デフォルトのテクスチャを使用すると、まさにそれを行うことができます。 テクスチャを置き換えると、魔法の星、煙、そしてもちろん火のようなエフェクトを作成できます。



パーティクルテクスチャの置き換えは非常に簡単です。 この時点まで、パーティクルはデフォルトのパーティクルマテリアルを使用して画面に描画されました。これは、円形のグラデーションテクスチャを持つパーティクルのマテリアルです。









このマテリアルを置き換えるには、 GameObject階層でTorchFireParticlesを選択します 。 次に、インスペクターでパーティクルシステムコンポーネントを見つけ、パーティクルシステムレンダラーモジュールを開きます。



プロジェクトビューでマテリアルフォルダーを開き、 FireMaterialマテリアルにドラッグしてMaterialプロパティに追加します。



GIF






次に、シーンを実行して、選択したテクスチャがどのように適用されるかを確認します。



GIF






熱を感じますか? ただし、炎は広すぎます。 これを修正するには、パーティクルシステムの形状を変更する必要があります。



粒子システムの形状変化



Shapeモジュールは、その名前が示すように、この形状のパーティクルの形状と動作を制御します。 いくつかの異なる形式から選択できます。 それぞれに独自のパラメーターがあります。 これにより、ボックス、球、または独自のメッシュにパーティクルを作成できます!



インスペクターでShapeモジュールを展開します。









コーンは、パーティクルシステムの形状として選択されます。つまり、ベースベースからパーティクルが放出され、 角度をつけて外側に移動します。









上記の例では、ベースの色は 、角度は 、粒子はです。 また、Shapeモジュールを展開すると、Sceneウィンドウにコーンの便利なプレビューが表示されることにも注意してください。









角度を変更することにより、円錐のサイズを変更して、より広くまたはより狭くすることができます。 値7を指定します。 そのため、粒子が立ち上がると少し拡大する便利な狭い境界線が得られます。



Radiusを変更することにより、ベースのサイズを変更できます。 値が大きいほど、放出時に散乱されるパーティクルが多くなります。 0.2の値を選択します。 このようにして、トーチの燃料用のタンク内に炎を確実に作成します。



シーンを実行して、炎の形がどのように変化したかを確認します。



GIF






それは本当の炎のように見え始めます! 最後にできることは、時間の経過とともにパーティクルのサイズを変更することです。



時間とともにサイズ変更



Size over Lifetimeモジュールを使用すると、森のホタルのように、生涯にわたって増加または減少する粒子、または脈動する粒子を作成できます。



パーティクルシステムモジュールのリストで[ 寿命を超えるサイズ]セクションを見つけます。 デフォルトはオフなので、モジュール名の横にあるチェックボックスをオンにします。









名前をクリックして、Size over Lifetimeモジュールを展開します。 そのため、上部に平坦な曲線( Curve )を含む暗い灰色の背景を開きます。









暗い灰色の背景をクリックして、インスペクターの下部にある曲線エディターを開きます。 水平軸は粒子の寿命を表し、垂直軸はそのサイズを表します。









曲線を編集するには、赤い線の両側にあるキーポイントを移動します。 曲線の任意の部分をダブルクリックして、新しいキーを追加できます。 キーポイントを削除するには、ポイントを右クリックして[キーの削除]を選択します。 ウィンドウの下部で以前に作成した曲線のいずれかを選択することもできます。



GIF






炎の舌は現実の世界でどのように振る舞うかを覚えておいてください。粒子が上昇すると炎の舌は減少します。 この動作をシミュレートするには、右側の3番目に完成した曲線を選択して、滑らかに下降する曲線を作成します。









シーンを実行して、エフェクト全体を確認してください!



GIF






おめでとうございます! 美しいパーティクルエフェクトを作成するために、新しいパーティクルシステムをセットアップして修正する方法を学びました。



次のセクションでは、Michael Bay内で目覚め、爆発的なエフェクトを作成する方法を学びます!



爆弾効果



Unityで爆発効果を作成するのは非常に簡単です。 パーティクルインスタンスを適切に作成する方法を見つけたら、この効果を使用して、地面をこするときに火花を放つ車の車輪や、爆発して紙吹雪を投げ出す風船のようなものに使用できます。



プロジェクトウィンドウで爆弾シーンを開き、 シーンを実行します。









シーンの下部にはセックスがありますが、それ以外のシーンでは何も起こりません。



爆弾を作成するには、 BombプレハブをBomb Emitterプレハブスロットに転送します。



GIF






シーンを再度実行して、爆弾が表示されるのを確認します。



GIF






エミッターは2秒ごとに新しい爆弾を作成します。 それら回転させるには、爆弾を作成するときに小さな回転力を追加する必要があります。



プロジェクトウィンドウのScriptsフォルダーでBombスクリプトを開きます。



Start()



次のコードを追加します。



 void Start() { float randomX = UnityEngine.Random.Range (10f, 100f); float randomY = UnityEngine.Random.Range (10f, 100f); float randomZ = UnityEngine.Random.Range (10f, 100f); Rigidbody bomb = GetComponent<Rigidbody> (); bomb.AddTorque (randomX, randomY, randomZ); }
      
      





最初の3行は、x、y、z軸に対して10〜100のランダムな浮動小数点値を生成します。 次に、爆弾のリジッドボディコンポーネントへのリンクを取得し、それに瞬間を適用します。 これにより、爆弾はランダムな方向に回転し始めます。 スクリプトへの変更を保存し、Unityに戻ってシーンを実行します。



GIF






現在、爆弾は投下時に美しく回転します。 しかし、私はあなたに爆発を約束しました!



階層で[ 作成 ]ボタンをクリックし、[ 空の 作成 ]を選択します 。 作成したGameObjectをクリックして、 ExplosionParticlesという名前を付けます。 次に、このGameObjectに新しいパーティクルシステムを追加します。 パーティクルシステムの作成方法を忘れた場合は、チュートリアルの最初のセクションを参照してください。



パーティクルシステムを作成したら、 GameObject ExplosionParticlesを階層からプロジェクトブラウザーのPrefabsフォルダーにドラッグします。 その後、GameObject ExplosionParticlesをプロジェクト階層から削除します。



GIF






次に、 PrefabsフォルダでBombプレハブを選択し、次のようにExplosionParticlesプレハブをExplosion Particles Prefab Bombスロットにドラッグします。



GIF






これで、爆弾が地面に触れると、新しいGameObject Explosion Particlesが作成されます。



シーンを実行して、爆発の様子を確認します。 再びピンクのテクスチャにバグがある場合は、心配しないでください。テクスチャを変更します。



GIF






非常に魔法ですが、これまでのところ爆発とはまったく異なります!



トーチと同様に、パーティクルシステムにはFireマテリアルを使用します。



プロジェクトウィンドウでExplosionParticlesプレハブを選択し、インスペクターでレンダラーモジュールを展開します。 以下に示すように、プロジェクトウィンドウからマテリアルフォルダーからマテリアルスロットにFireMaterialをドラッグします。



GIF






エフェクトを完了するには、Mainモジュールの次のパラメーターを変更する必要があります。









  1. Duration0.70に設定します。
  2. ループを無効にする必要があります。 パーティクルは一度だけ放出する必要があります。
  3. Start Lifetime0.7に設定します。
  4. 開始速度10に設定します。
  5. 開始サイズ2に設定します。
  6. Gravity Modifier1に設定します。 このため、最後の粒子はわずかに下がります。


爆弾シーンを起動して確認します。 私たちが作成したもの:



GIF






まあ、それはすでに爆発のように聞こえますが、あなたは間違いなくより良くすることができます!



ブラスト作成



爆発を改善するために、パーティクルシステムのモジュールのプロパティを変更します。 変更するモジュールを推測しますか? ここにヒントがあります-すでに使用しています。



これがEmissionモジュールであると判断した場合、素晴らしいです!



Emission Moduleを展開します。 レートは、1秒間に作成されるパーティクルの数です。 爆発の場合、粒子の一定した流れではなく、鋭い閃光が必要です。



Rate over Time0に設定します 。 次に、距離超えるレートに移動すると、デフォルトで空のバーストのリストが表示されます。









バーストは、特定の時点で同時に放出される粒子の集まりです。



右下隅の[ +]ボタンをクリックして、新しいバーストを追加します。 TimeCountの 2つのフィールドが表示されます。









Time0のままにして、 Count150に設定します。 このようなパラメータにより、粒子システムはシステムの開始時に150個の粒子を同時に放出します。



シーンを実行します。 今はどうですか?



GIF






これは爆発のようなものです! この爆発はよく見えますが、それでもstillい円錐形をしており、粒子は消えず、消えます。 爆発の最終的な外観を与えるには、正しい形状を設定する必要があります。



まず、 Shapeモジュールを展開します。









トーチの火炎形状にこのモジュールをすでに使用しましたが、ここでは他の形式を選択できます。 [ コーン]というドロップダウンボックスをクリックして、使用可能なすべてのオプションを表示します。









各フォームは、独自の方法でエミッターに影響します。 以下に示す各アニメーションは、形状のみが変更された同じエミッターを示しています。



球体







半球(HemiSphere)







コーン







ボックス(Box)







メッシュ(キューブ)(メッシュ)







サークル







エッジ







1つのシステムから、その形状を変更するだけで、さまざまな効果を得ることができます! リアルな爆発を作成するには、 球形を選択します。



シーンを起動して、 爆発する準備をします。



GIF






今、すべてが驚くほどに見えます!



爆発は美しいものの、小さな問題があります。 粒子が消えます。 これは震えを感じさせ、完全に不自然に見えます。 ただ消えるのではなく、爆発が徐々に消えるように、粒子は時間とともにフェードする必要があります。



色の変化



インスペクタでパーティクルシステムを開いた状態で、 Color over Lifetimeモジュールの横にあるチェックボックスをクリックして有効にし、展開します。 すぐに「 」という単語が表示され、その隣に白いブロックが表示されます。 白いブロックを クリックます









これにより、グラデーションエディターが開きます。









粒子の寿命中の色の変化は、勾配として表示されます。 最初の色は左側にあり、粒子は徐々に右側の色に変わります。









端にある4つの白いストライプはマーカーと呼ばれます。 使用可能な2つのマーカーの間をクリックして、新しいマーカーを追加します。 マーカーを削除するには、ストリップからマーカーをドラッグします。



GIF






上部マーカーはアルファまたは色の不透明度を制御し、下部マーカーはRGBカラー (赤、緑、青)を制御します。









右端のアルファマーカーをクリックします。 現在のアルファ値は、グラデーションエディターの下部に表示されます。









スライダーを0にドラッグします 。 これで、パーティクルはその寿命の間に徐々に透明になります。



シーンを再度実行して、変更がどのように影響するかを確認します。



GIF






素晴らしい爆発!



シーンをさらに良くしたいですか? トーチのシーンに戻り、炎にSize Over Lifetimeモジュールを使用させ、同様の効果を得ます。



次はどこに行きますか?



完成したプロジェクトはここからダウンロードできます



このチュートリアルでは、Unityでパーティクルシステムとそのモジュールがどのように機能するかを学習し、望ましい効果を得るためにそれらを構成する方法も学習しました。 さまざまなパラメーターを試して、達成できる他の効果を確認します。



Shurikenパーティクルシステムとそのモジュールの詳細については、 Unity公式ドキュメントパーティクルシステムに関するビデオを参照してください。 パーティクルシステムスクリプトの詳細については、 こちらをご覧ください



All Articles