2016-08-31 9 views
1

なぜ私の衝突が私のコンソールに「私は敵を撃った」という印象を与えていないのか分かりません。プレイヤーは剛体のコンポーネントを持っています、敵はありません。衝突検出に関する問題

私の敵はtag敵です。敵は変換を使用して移動しています。私のプレーヤーは剛体のコンポーネントを持っています、私の敵はありません。何か案は?

using UnityEngine; 
using System.Collections; 

public class PlayerMovement : MonoBehaviour { 
public float moveSpeed; 
public float maxSpeed = 5f; 

private Vector3 input; 
private Rigidbody rb; 

// Use this for initialization 
void Start() { 
    rb = GetComponent<Rigidbody>(); 
} 

// Update is called once per frame 
void Update() { 
    input = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical")); 

    if (rb.velocity.magnitude < maxSpeed) { 
     rb.AddForce(input * moveSpeed); 
    }  
} 

void onCollisionEnter(Collision other) 
{ 
    if (other.transform.tag == "Enemy") 
    { 
     print ("I hit enemy"); 
    } 
} 
} 
+0

敵オブジェクトにはコライダーが取り付けられていますか? – TheDjentleman

答えて

1

新しいUnityユーザにとっては別の簡単な間違いです。綴り数!単にonCollisionEnterOnCollisionEnterに置き換えてください。コールバック関数は大文字と小文字が区別され、最初の文字は通常が大文字のです。

これを変更することができない場合は、敵にもリジッドボディを添付してください。それらの両方に両方のCollidersが接続されており、IsTriggerenabledではないことを確認してください。

+0

ありがとう!これは私の問題でした。 – Travis

0

いくつかのソリューションが適合する可能性があります。たぶんあなたは単にあなたの敵にタグを設定することを忘れましたか? Unity3Dコリジョンマトリックス(ページ下部のhttps://docs.unity3d.com/Manual/CollidersOverview.html)を見てください。

衝突行列は、いつ衝突メッセージを受け取るかを示します。例えば。剛体コライダーと衝突する静的コライダーを持つことはできません。すべてのゲームオブジェクトを再確認してください。彼らは衝突の必要に合っていますか?