前書き
今回紹介するのは「ParticleにColliderを付与する方法」になります。通常、ParticleSystemを利用する際はColliderはありませんが設定を変えることでParticleにもColliderを設定することができます。
TopDownEngineの機能でDamageOnTouchというスクリプトが存在しますが、これはColliderが付与されているオブジェクトに対してDamageを付与するスクリプトになります。今回紹介する方法でParticleにColliderを付与すればParticleに接触するだけでダメージが発生するようになります。
ParticleにColliderを付与することができれば、わざわさBoxColliderやCircleColliderを付与する手間が省けますので今回紹介する方法を使ってParticleにColliderを設定してみましょう。
Particle SystemでColliderを設定する方法
Particle SystemでColliderの設定についてはCollisionから設定することができます。
上記で設定したパラメータは「2Dのオブジェクトに対してColliderの衝突を検知する」パラメータとなりますので、3Dオブジェクトに対してColliderの衝突を検知した場合はModelを3Dに変更したうえで動作確認をしてみてください。
最低限必要な設定を4つを上げますのでまずはこちらを設定をしたうえで動かしてみてください。
Type
Typeの設定には「Planes(平面)」と「World(世界)」の2つがあります。それぞれを簡単に説明すると
- Planes
指定した平面にのみパーティクルが反応します。
- World
ゲームシーン全体で物理的に他のColliderを持つオブジェクトと衝突する設定になります。
Model
Typeの設定には「3D」と「2D」の2つがあります。
- 3D
Box Collider, Sphere Collider, Mesh Colliderなどの3D Colliderを持つオブジェクトに対してパーティクルが衝突します。 - 2D
Box Collider 2D, Circle Collider 2D, Polygon Collider 2Dなどの2D Colliderを持つオブジェクトに対してパーティクルが衝突します。
Collides With
衝突する対象のレイヤーを設定することができます。
Send Collision Messages
パーティクルが衝突した際にメッセージを送信するかどうかを制御する設定になります。このパラメータを有効にすることで衝突イベントを検知することができ、スクリプトで衝突した際の処理を実装することができます。
Particle Systemの衝突を取得する方法
Particle Systemの衝突を取得するメソッドとしてOnParticleCollisionが存在します。これはパーティクルが他のオブジェクトに衝突したときに呼び出されるメソッドでこれを使うことでパーティクルが衝突した際の処理をスクリプトで実装することできます。
Particle SystemにDamageOnTouchを付けた場合
以下は、OnParticleCollisionを使用してParticle SystemにDamageOnTouch機能を付与し、パーティクルが衝突した際にダメージを発生させるためのソースコードになります。
# DamageOnTouchはTopDonwEngineに備わっているスクリプトになります。
public class ParticleCheck : MonoBehaviour
{
private DamageOnTouch damageOnTouch;
private void Start()
{
damageOnTouch = GetComponent<DamageOnTouch>();
}
void OnParticleCollision(GameObject obj)
{
damageOnTouch.ParticleOnTrigger(obj);
}
}
上記のスクリプトをParticle SystemとDamageOnTouchの同じ場所にアタッチすることでParticleが衝突するとダメージが発生するようになります。
まとめ
今回はParticleにColliderを付与する方法(+Damageの設定)について紹介しました。
ParticleにColliderを付与することで衝突した際の処理をカスタマイズできるようになります。今回はDamageOnTouchを使用してParticleに衝突した時にダメージが発生するような方法を紹介しましたが、ほかにも「ぶつかったら色が変わる」、「ぶつかったら爆発する」などもともとのParticleにプラスして新しいエフェクトを追加することもできます。
オリジナル要素を出すためにParticle SystemのCollider設定をぜひ活用してみてください。
コメント