Unity OnTrigger OnCollision等について(動画あり)
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 シューティングゲーム プレイヤー移動と弾の実装・生成[コピペOK](所要時間5分)
Unity オブジェクト移動と鏡の作り方[コピペOK](所要時間5分)