Version: Unity 6.0 (6000.0)
言語 : 日本語
パーティクルの設定
グローバルパーティクルプロパティの設定

パーティクルの放出とエミッター

パーティクルの放出と、Unity が Particle System モジュールを使用してパーティクルを管理する方法を理解します。

放出の頻度

放出の頻度は一定か、カーブに基づいてシステムの生存期間の間に変化します。もし Emission モジュールRate over Distance モードが選択されていたら、親のオブジェクトが移動した距離の単位に応じて一定数のパーティクルが放射されます。これは、オブジェクトの動きによって実際に生成されるパーティクルをシミュレートするのにとても便利です (例えば、汚れたトラックのタイヤから出る砂埃など)。

もし Rate over Time がアクティブにされていたら、親オブジェクトがどのように動いているかに関係無く毎秒設定した数のパーティクルが放出されます。さらに、特定の時間に表示される余分なパーティクルのバーストを追加できます (例えば、煙を吹き出す蒸気機関車の煙突など)。

エミッターの形状

Shape モジュールはパーティクルを放出するボリュームや表面を定義します。さらに放出時の向きと速度を決めることができます。Shape プロパティは放出ボリュームの形状を定義し、残りのモジュールプロパティは選択した形状に応じて変化します。

すべての形状 (Mesh を除く) は、その寸法を定義するためのプロパティ (Radius プロパティなど) を有しています。これらを編集するには、シーンビューでワイヤーフレームで描かれているエミッター形状のハンドルをドラッグします。形状の選択は、パーティクルを発射できる部分だけでなく、パーティクルの初期方向にも影響を与えます。例えば、Sphere はパーティクルを全方位の外側に向かって放出し、Cone はパーティクルの異なったストリームを放出し、Mesh は表面に向かう法線の方角にパーティクルを放出します。

メッシュベースのエミッター形状の設定

Single Material プロパティをチェックすると、特定のマテリアル (サブメッシュ) からのみパーティクルを放出できます。Normal Offset プロパティをチェックすると、メッシュの法線に沿って放出位置をオフセットすることができます。

メッシュの色を無視するには、Use Mesh Colors プロパティをチェックします。テクスチャの色をメッシュから読み取るには、読み取りたいテクスチャを Texture プロパティに割り当てます。

メッシュをパーティクルシステムで動作させるためには、読み書き可能にする必要があります。エディターでそれらを割り当てる場合は、Unity がこれを処理します。しかし、ランタイムにさまざまなメッシュを割り当てたい場合は、Import SettingsRead/Write Enabled 設定をチェックする必要があります。

Mode プロパティを使用すると、パーティクルシステムはメッシュの表面上でパーティクルを予測可能な方法で放出することができます。頂点から放出するとき、このプロパティを使うと、メッシュの頂点の配列の次の頂点から新しいパーティクルを放出することが可能です。エッジから放出するとき、パーティクルシステムはメッシュの三角形/線のエッジに沿って滑らかにパーティクルを放出することができます。

エミッターのスピードに基づくパーティクルの生存期間

Lifetime by Emitter Speed は、パーティクルがスポーンするときのエミッターのスピードに基づいて、各パーティクルの初期生存期間を制御します。パーティクルの初期生存期間に、パーティクルをスポーンしたオブジェクトのスピードに応じた値をかけます。ほとんどのパーティクルシステムでは、これはゲームオブジェクトの速度ですが、サブエミッターの場合は、サブエミッターパーティクルの元になった親パーティクルの速度になります。

他のパーティクルからのパーティクル放出

多くのタイプのパーティクルは、生存期間のさまざまな段階で効果を生み出します。パーティクルシステムのサブエミッターを使って実装することもできます。例えば、弾が銃身を飛び出すときに煙の粉が吹き出す、衝撃で火の玉が爆発する、などを実装できます。サブエミッターを使って、このような効果を生み出すことができます。

サブエミッターは単純に、シーン上か プレハブ から作成された通常のパーティクルシステムオブジェクトです。これは、サブエミッターが自身にサブエミッターを設定することができ、花火のような複雑な効果を手掛けるのに便利であるということを意味しています。ただし、サブエミッターを用いると大量のパーティクルを簡単に生成できるので、リソースに負担をかけてしまう場合があります。

サブエミッターをトリガーするには、以下の条件を使用します。

  • Birth:パーティクルが作成されたとき。
  • Collision:パーティクルがオブジェクトと衝突するとき。
  • Death:パーティクルが破壊されたとき。
  • Trigger:パーティクルがトリガーコライダーと相互作用するとき。
  • Manual:スクリプトを通してリクエストされたときのみトリガーされます。詳細については、ParticleSystem.TriggerSubEmitter を参照してください。

CollisionTriggerDeathManual イベントは Emission モジュールのバーストの放出を使用しているときにのみ使用できます。

さらに、Inherit オプションを使用して、親パーティクルのプロパティを新しく作成した各パーティクルに転送できます。転送可能なプロパティは size、rotation、color、lifetime です。速度の継承を制御するには、サブエミッターシステムの Inherit Velocity モジュールで設定します。

Emit Probability プロパティで、サブエミッターのイベントがトリガーされる確率を設定することも可能です。値が 1 の場合、イベントのトリガーは保証されますが、それよりも値が低い場合は発生の確率が低くなります。

追加リソース

パーティクルの設定
グローバルパーティクルプロパティの設定