Unity OnTrigger OnCollision等について(動画あり)

2023年10月21日

スポンサーリンク

Unityでは、OnTrigger OnCollision, また、Enter,Stay,Exitなど当たり判定に寄与する関数が多く存在します。

Unityを使い始めのころはどの関数を使えばいいのか分からない事が多いと思います。

そこで、今回は当たり判定に関わる関数についてまとめてみました。

一応、当たり判定に関するComponent(CollisionやRigitbody)についても少し説明していますが、

スポンサーリンク

あまりわからないという方は以下の記事を参考にしてください。

・・・

スポンサーリンク

まずは、Colliderコンポーネントについてです。

Colliderには、box Collider や sphere Colliderなど多くの種類がありますが、

どれも当たり判定の有無や、当たり判定をする範囲の決定に関わるコンポーネントです。

詳しくは上リンクを参照してください

・・・

・・・

スポンサーリンク

OnTrigger とOnCollisionの違い

OnTrigger と OnCollisionについてです。

まずはColliderコンポーネントのIsTriggerについてです。(下画像)

Is Triggerにチェックを入れると他オブジェクトをすり抜けるようになります。

OnTriggerとOnColliderの違いはここに起因しています。

OnTriggerは、Is Triggerチェックのついたオブジェクトの当たり判定時に呼び出される関数。

OnColliderは、Is Triggerにチェックのついていないオブジェクトの当たり判定時に呼び出される関数です。

・・・

・・・

Enter、Stay、Exitの違い

Enter、Stay、Exitの違いについてです。

Enterは、オブジェクトが接触したタイミングで呼び出される関数

Stayは、オブジェクトが接触している間呼び出され続ける関数

Exitは、オブジェクトの接触がなくなるタイミングで呼び出される関数です。

・・・

つまり、OnTriggerEnterはIs Triggerにチェックがついているオブジェクトが、

他オブジェクトに接触したタイミングで呼び出される関数

OnCollisionExitは、Is Triggerにチェックがついていないオブジェクトが、

接触している他オブジェクトと離れるタイミングで呼び出される関数ということです。

以下1分程度の動画を見るとどのタイミングでどの関数が呼び出されるか視覚的に理解できると思います。

また、呼び出されるタイミングが分かるようにSpereオブジェクトには、下スクリプトをつけています。

void OnTriggerEnter(Collider other)
    {
        Debug.Log("OnTriggerEnter");
    }

    void OnTriggerStay(Collider other)
    {
        Debug.Log("OnTriggerStay");
    }

    void OnTriggerExit(Collider other)
    {
        Debug.Log("OnTriggerExit");
    }

    void OnCollisionEnter(Collision collision)
    {
        Debug.Log("OnCollisionEnter");
    }

    void OnCollisionStay(Collision collision)
    {
        Debug.Log("OnCollisionStay");
    }

    void OnCollisionExit(Collision collision)
    {
        Debug.Log("OnCollisionExit");
    }

Unity 公式ユーザーマニュアル

他の記事

Unity シューティングゲーム プレイヤー移動と弾の実装・生成[コピペOK](所要時間5分)

Unity オブジェクト移動と鏡の作り方[コピペOK](所要時間5分)

スポンサーリンク