Unity事例ノート

UNITY

OnCollisionEnterとOnTriggerEnterの違い

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

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

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

オブジェクトの準備

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

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

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

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

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

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

PlayerMove.csを記述します。

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

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

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

OnCollisionEnter

OnCollisionEnterから試してみます。

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

プレイしてみましょう。

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

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

OnTriggerEnter

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

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

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

プレイしてみましょう。

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

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

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

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

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