我在按照学习路线学习Stealth游戏那一课,其中Nav Mesh Agent不会移动,但是会自动朝向目标位置,并且在Scene中手动移动到目标位置,自动切换到下个目标位置也正常,但是就是不移动,只会转向,代码如下:
public class EnemyMoveAI : MonoBehaviour
{
// Start is called before the first frame update
public Transform[] wayPoints;
public float patrolIntervalTime = 3f;
private int index = 0;
private float intervalTimer = 0f;
private NavMeshAgent navAgent;
private void Awake()
{
navAgent = GetComponent<NavMeshAgent>();
navAgent.destination = wayPoints[index].position;
}
void Start()
{
}
// Update is called once per frame
void Update()
{
Patrolling();
}
private void Patrolling()
{
if(navAgent.remainingDistance<0.5f)
{
intervalTimer += Time.deltaTime;
if(intervalTimer>=patrolIntervalTime)
{
index++;
if (index>wayPoints.Length-1)
{
index = 0;
}
navAgent.destination = wayPoints[index].position;
intervalTimer = 0;
}
}
}
}
我在Navigation视图里也可以看到导航箭头,但是就是不移动是为什么?
好吧,解决了,因为我是用的Character Controller而不是像视频中一样使用的Rigidbody+Collier的方式,似乎是Character Controller限制住了移动,但是有另外一个问题,原视频中的代码是利用navAgent.remainingDistance<0.5f来判定是否要停下里等待,但是在运行过程中总是冲出距离,导致navAgent.isStopped = true;已经执行了,但是循环第二次执行的时候navAgent.remainingDistance<0.5f条件又不满足了,导致即不走,计数器也不执行卡在原地了。