Unity事例ノート

UNITY

OnCollisionEnterとOnTriggerEnterの違い

オブジェクトが衝突したときのイベント発生については、OnCollisionEnterとOnTriggerEnter、2つの設定があります。

両方の動きを見ながら、2つの違いについて見ていきましょう。

関連記事:
【Unity C#】領域に入っている間と離れたときに発生
【Unity C#】オブジェクトから離れるとイベント発生
【Unity C#】触れている間はイベントを発生させる
【Unity C#】触れた相手のオブジェクト名を取得
【Unity C#】ぶつかったオブジェクトと同じカラーにする
【Unity C#】ぶつかると逆方向に向きを変えて進む
【Unity C#】OnCollisionやOnTriggerで複数オブジェクトを指定
【Unity C#】コライダーのサイズを変えるスクリプト

オブジェクトの準備

平面、Cube、Sphereのオブジェクトを用意します。

オブジェクトに色をつけて配置を変更。

カメラを動かして、斜めからのアングルにしました。

Sphereにリジッドボディを追加します。

Sphereを動かすために、スクリプトを作成します。

PlayerMove.csを作成して、Sphereに追加しましょう。

PlayerMove.csを記述します。

プレイして動きを確認します。

十字キーの操作で、Sphereをコントロールできています。

次は、CubeにぶつかればSphereが黄色になるようにしましょう。

OnCollisionEnter

OnCollisionEnterから試してみます。

PlayerMove.csを開いて、コードを追加しましょう。

プレイしてみましょう。

キューブにぶつかれば、黄色に変わります。

このように、OnCollisionEnterは、オブジェクト同士がぶつかったときに発生します。

OnTriggerEnter

次は、OnTriggerEnterを試してみましょう。

Cubeを選択し、「トリガーにする」にチェックを入れます。

PlayerMove.csを開いて、コードを編集します。

プレイしてみましょう。

キューブを通過したとき、黄色に変わります。

このように、OnTriggerEnterは、トリガーとなるオブジェクトに侵入したときに、発生します。

コライダーの「トリガーにする」は、侵入される側にチェックを入れます。

場面によって使い分けできる便利な仕組みです。

関連記事:
【Unity C#】領域に入っている間と離れたときに発生
【Unity C#】オブジェクトから離れるとイベント発生
【Unity C#】触れている間はイベントを発生させる
【Unity C#】触れた相手のオブジェクト名を取得
【Unity C#】ぶつかったオブジェクトと同じカラーにする
【Unity C#】ぶつかると逆方向に向きを変えて進む
【Unity C#】OnCollisionやOnTriggerで複数オブジェクトを指定
【Unity C#】コライダーのサイズを変えるスクリプト