LemonteaのUnity部屋

C#とかのお話です~

Unity CollisionモジュールでParticlesystemとオブジェクトの当たり判定

こんにちは。レモンティーです。

今回は、Collisionモジュールの
Send Collision Messageを使って
パーティクルとObjectの当たり判定をとってみます。

今回用意したのは
↓のような三つのキューブと一つのパーティクルシステムです
f:id:sawalemontea:20170916142027p:plain

(キューブは一つでいいのですが、
別のことした後だったのでたまたま三つです笑)

まず、パーティクルのCollisionモジュールを設定します。

f:id:sawalemontea:20170916151537p:plain

TypeをWorldにし、
Send Collision Messageにチェックをいれます。


次に、スクリプトを書きます
衝突判定を抜き出すと以下のようになります。

ちなみに、
パーティクルとオブジェクトの衝突判定ではRigidBodyは要りません

 private void OnParticleCollision(GameObject other)
    {
        if(other.gameObject.tag == "Player")
        {
            Debug.Log("パーティクルです。"+other.gameObject.name+"とぶつかりました");
        }

        if(other.gameObject.tag == "Particle")
        {
            Debug.Log(gameObject.name + "です。パーティクルと衝突しました。");
        }
    }

今回は、パーティクルにParticle
キューブにPlayerというタグをつけています。


これを含むスクリプトをキューブとパーティクル両方につけます


それではさっそく実験してみましょう

youtu.be


おお~、ちゃんと判定してますね。

これでパーティクルを攻撃魔法などに使う時、
ダメージ判定がしやすくなるでしょうね。

今回はこれでおしまいです。