質問: オブジェクトが何かに衝突したとき"mainGame"というSceneに画面を切り替えたいのですが うまくいきません。助けていただけないでしょうか。 ``` using UnityEngine; using System.Collections; public class displayChange : MonoBehaviour { void Start() { } //オブジェクトが衝突したとき void OnCollisionEnter(Collision collision) { Application.LoadLevel("mainGame"); } } ```
回答: `OnCollisionEnter()`が呼ばれない場合は、いくつかの可能性が考えられます。 1.**Is Trigger**がONになっていて、`OnTriggerEnter()`の方が呼ばれている Colliderの**Is Trigger**のフラグがONになっている場合は、`OnCollisionEnter()`ではなく`OnTriggerEnter()`が呼ばれてしまいます。 `OnCollisionEnter()`を使う場合は**Is Trigger**のフラグがOFFにしてみてください。 !イメージ説明 2.`OnCollisionEnter()`の引数の型が誤っている `OnCollisionEnter()`と`OnTriggerEnter()`は引数の型が違います。 引数の型が間違えていないか確認してみてください。 ``` void OnCollisionEnter( Collision i_collision ) { Debug.Log( "Hit Collision!" ); } void OnTriggerEnter( Collider i_other ) { Debug.Log( "Trigger Collision!" ); } ``` 3.**RigidBody**が当てる側のGameObjectについていない 当たり判定を行うには当てる側のGameObjectに**RigidBody**コンポーネントがついている必要があります。 `OnCollisionEnter()`と`OnTriggerEnter()`は当たり判定が行われれば、呼び出されるため、 当てられる側に**RigidBody**コンポーネントがなくても呼び出されます。 4.当てる側、当てられる側の双方のGameObjectにRigidBodyがついており、かつ**Is Kinematic**がONになっている。 当てる側、当てられる側のRigidbodyの**Is Kinematic**が双方ともONになっている場合は、`OnCollisionEnter()`は呼び出されません。 !イメージ説明 以上の内容を確認してみていただけませんか。