Unityでコライダーを付けたオブジェクトが衝突した時にイベントを起こす方法/OnCollisionEnter2Dの使い方

goats IT

Collisionとは衝突のこと。OnCollisionEnterとは、コライダー(当たり判定)同士が接触した時に呼び出されるイベントです。
OnCollisionEnter2Dの場合、2Dコライダー同士が接触した時に呼び出されます。(リファレンス)。

スポンサーリンク

成果物

oc1
移動するオブジェクトが壁にぶつかった時、左に弾かれたり、
c
右に弾いたりしてみます。

OnCollisionEnter2Dの使い方

コライダー(2D)同士が衝突した時にイベントを実行
OnCollisionEnter2D(Collision2D 衝突したものを代入する変数名);
oncollision1
新たにスクリプトを作成し、void OnCollisionEnter2D(Collision2D collision)と記述します。
最後のcollisionは変数名なので好きな名前を付けていいんですが、推奨されるのはストレートなネーミングです。
oncollision2
OnCollisionEnter2Dの中に、x方向に-100移動する、という命令を記述します。
oncollision3
乱暴なコードですが、これをアタッチすれば、
oc1
左から右にぶつかると弾かれる状態になります。
   //Unity C#
    void OnCollisionEnter2D(Collision2D collision)
    {
        this.transform.Translate(-100, 0, 0);
    }

接触した相手にスクリプト実行

col1
この最後のcollisionには、ぶつかった相手の名称が保存されます(変数名は任意に変更可能)。
col2
さっきのコードを少しいじり、collision.transform.Translate(100, 0, 0);とでもしてやれば、
c
逆にぶつかった相手を弾き飛ばすスクリプトにすることも可能です。
やりたいことから逆引きするUNITYの使い方まとめ
Unityをやりたいことから学習していけるよう、機能・用途別にまとめたページです。C#の命令別の逆引きは現時点で作っていません。2019の時期に書き始めているので、それより前のバージョンについては言及しません。

コメント