2016-09-26 24 views
0

我有一个跟随我的玩家的NPC,但是当它离玩家一定距离时我无法让它停下来。这一直让我感到沮丧,因为网络上没有任何东西可以做到这一点。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

我用过 public float minDistance = 1f; 对象跟随角色,但只有玩家真的离玩家很远,我该如何解决这个问题?抱歉的问题! –

+0

其实都很好理解,谢谢你的帮助! :) –