2016-09-27 7 views
0

NPCがプレーヤーに衝突するのを止める方法は分かっていますが、どのようにしてNPCがプレーヤーと同様に互いに衝突するのを止めることができないのか分かりません。Unity 3D:C#NPC互いに衝突する

NPCのタグは「AI」ですが、私はいくつかのことを試しましたが、これは本当に分かりません。

ここに私のコードですが、どんな助けもありがとうございます。

using UnityEngine; 
using System.Collections; 

public class AI : MonoBehaviour { 
public Transform target; 
public int moveSpeed = 5; 
public int rotationSpeed = 2; 
public Transform myTransform; 
public float minDistance = 0.1f; 


void Awake() 
{ 
    myTransform = transform; 
} 

void Start() 
{ 
    target = GameObject.FindWithTag ("Player").transform; 
} 

void Update() 
{ 
    Vector3 Distance = target.position - myTransform.position; 

    if(Distance.sqrMagnitude>minDistance*minDistance) 
    { 
     myTransform.rotation = Quaternion.Slerp (myTransform.rotation, Quaternion.LookRotation (target.position - myTransform.position), rotationSpeed * moveSpeed * Time.deltaTime); 
     myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime; 
    } 
+0

お互いが右に通ることができるはずですか?または、お互いを完全に避けますか? –

+0

私はNPCのすべてに距離を設定していることを意味しています。彼らがプレイヤーに近づくと、彼らはすべて一緒に集まります.NPCとプレイヤーのすべてから距離を取ってみたいlike 1 お手伝いできますか? :) –

答えて

0

AIゲームオブジェクトのコライダーコンポーネントを見つけて、それを削除するか、IsTriggerオプションをチェックしてください。

More on IsTrigger:

トリガーコライダーですか?

トリガーは、着信剛体との衝突を登録しません。代わりに、剛体がトリガーボリュームに入ったり出たりすると、OnTriggerEnter、OnTriggerExitおよびOnTriggerStayメッセージを送信します。

+0

あなたの返信ありがとう!私はまだこれを動作させるように見えることができない、私は彼らにボックスコライダーを持ってみました彼らはすべてジブを...あなたが意味するチュートリアルを知っていますか? –

+0

コライダーを取り外してみましたか?原始的な統一GameObjectsはコライダーで作成されているため、AIやその子どもの上にいくつか持っているかもしれません。 – CaTs

0

お互いに衝突しないように、プレイヤーからの距離と他のNPCからの距離を設定すると、競合する可能性があります。

たとえば、NPCがコードによってプレイヤーから遠くに移動するように指示されている可能性があります。これは別のNPCに近づけすぎることを意味するため、2つのコマンドは互いに競合します。

よりモジュラーアプローチは、メソッドにコマンドを区切るために次のようになります。それが適切な場合

AvoidPlayer() 
{ 
    // Code here to move away from player. 
} 

AvoidNPC() 
{ 
    // Code here to move away from NPC. 
} 

あなたはその後、それぞれを呼び出すことができます。 NPCとプレイヤーの間の距離が常に最小限になるようにするには、競合するコマンドの論理的な問題に注意してください。 NPC

関連する問題