2016-09-26 5 views
0

私は自分のプレーヤーに続くNPCを持っていますが、プレイヤーから一定の距離にいるときに停止することはできません。これは、これを行うためのWeb上に何もないので、私は一晩中私をイライラさせてきました。NPCはプレイヤーの一定の距離で止まらない

彼らは衝突し、お互いを打つ!ここで

はNPCを移動するための私のコードです:

using UnityEngine; 
using System.Collections; 

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

void Awake() 
{ 
    myTransform = transform; 
} 

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

void Update() 
{ 
    myTransform.rotation = Quaternion.Slerp (myTransform.rotation, Quaternion.LookRotation (target.position - myTransform.position), rotationSpeed * moveSpeed * Time.deltaTime); 
    myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime; 

} 
} 
+0

トリガー楕円をターゲットの周りに配置し、敵がトリガーコライダーを通過したら、AIの移動を停止します。 'OnTriggerEnter()'を使います。 –

+0

返信いただきありがとうございますが、これは以下のコードにも同様に動作するようになっています。私はこれに従うことができるチュートリアルを知っていますか?ユニティは初めて! –

答えて

2

あなたはそれが遠くにいた場合にのみ、動きコードを適用する必要があります。それが十分に近い場合は、移動コードを適用しないでください。

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

返信いただきありがとうございます!私はUnityとC#を初めて使っていて、これを理解しようとしていますが、これを動作させることはできません! コンテキスト内にminDistanceを作成する必要があります これを浮動小数点数として追加しますか?あなたの時間を感謝します! –

+0

i used public float minDistance = 1f; オブジェクトはキャラクターに従いますが、プレイヤーだけがプレイヤーから実際に離れていますが、これをどのように修正できますか?ご質問申し訳ありません! –

+0

実際にすべての良いことがわかった、助けてくれてありがとう! :) –

関連する問題