2013-12-13 15 views
7

ほとんどすべての回答を確認しましたが、ほとんど単純なエラーと間違いでした。 問題は、他の剛体と衝突してもOnCollisionEnterが呼び出されないことです。ここ OnCollisionEnterは単体で呼び出されていません

は呼び出されませんどの部分である:でも

void OnCollisionEnter(UnityEngine.Collision col) { 
     Debug.Log("collision!!!"); 
     foreach(ContactPoint contact in col.contacts) { 
      //checking the individual collisions 
      if(contact.Equals(this.target)) 
      { 
       if(!attacking) { 
        Debug.Log("hitting target"); 
       } else { 
        Debug.Log("dying"); 
        //engage death sequence 
       } 
      } 
     } 
    } 

ない「衝突!!!」メッセージが表示されます。間違った使い方を理解していますか、何か忘れましたか?

+0

また、オブジェクトに添付されたコンポーネント: transform;スプライトレンダラー。ボックスコライダー2D;サークルコライダー2D;敵コントローラ(スクリプト);剛体2D;アニメーター; –

+1

この情報を追加するには[あなたの投稿を編集](http://stackoverflow.com/posts/20567692/edit)してください。コメントが追加されないようにしてください。 – Dave

+0

OnCollisionEnterは、 characterControllerを使用しています。それはそれ自身の衝突方法です(私はそれをリンクするために現時点でそれを見ることができません)。 –

答えて

32

を試してみてください、あなたは?? 2Dコライダーとrigidbodiesを使用しています。その場合は、ここで私は何をすべきかである代わりに

OnCollisionEnter
void OnCollisionEnter2D(Collision2D coll) 
    { 
     Debug.Log(coll.gameObject.tag); 

    } 
+0

これは大丈夫です! – Torch2424

+0

ありがとう、そんなに男...! – dharmesh

1

コリジョンマトリックス(編集 - >プロジェクト設定 - >物理)が、オブジェクトが属するレイヤー間の衝突を排除しないようにする必要があります。

Unity Docs

また、他のオブジェクトが持っていることを確認する必要があります、コライダーを剛体とオブジェクト自体またはこれらのコンポーネントのいずれかが無効になっていないことを。

+4

私は最後に、2DコリジョンではOnCollisionEnter2D(Collision2D col)メソッドを使用する必要があることを理解しました。 –

+0

あまりにも:D – Alex

1

のこの機能を使用します。

  1. は、あなたがターゲットに衝突するオブジェクトが非動剛体とメッシュコライダーを持っていることを確認します。私のヒッターオブジェクトは立方体であり、コライダーをメッシュコライダーに変更するだけです。
  2. メッシュコリダーインスペクターでは、必ずconvexを有効にしてください。メッシュコリダーインスペクターの詳細をご覧くださいhere

あなたのOnCollisionEnterが機能しました。これがあなたに役立つことを願っています

0

パラメータのクラス名を誤って入力したためです。これはエラーも動作しません。 例:

OnCollisionEnter(Collider other) //this is wrong 
OnCollisionEnter(Collision other) //this is correct 
0

あなたはその必要性の衝突を検出し、同じオブジェクトにスクリプトを添付する必要があります。

関連する問題