Unity - A计划(一年有效期) 扫二维码继续学习 二维码时效为半小时

(61评价)
价格: 2208.00元
Nav Mesh Agent只转向,不会移动
追梦的陈哈哈发起了问答2020-06-17
2
回复
922
浏览

我在按照学习路线学习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视图里也可以看到导航箭头,但是就是不移动是为什么?

 

所有回复
  • 追梦的陈哈哈 2020-06-17

    好吧,解决了,因为我是用的Character Controller而不是像视频中一样使用的Rigidbody+Collier的方式,似乎是Character Controller限制住了移动,但是有另外一个问题,原视频中的代码是利用navAgent.remainingDistance<0.5f来判定是否要停下里等待,但是在运行过程中总是冲出距离,导致navAgent.isStopped = true;已经执行了,但是循环第二次执行的时候navAgent.remainingDistance<0.5f条件又不满足了,导致即不走,计数器也不执行卡在原地了。

    • 老师_Trigger 2020-06-18

      同学你好,这个可以通过慢慢调整数值测试来达到效果,另外可以参考一下这个较新版本整理过的工程:链接:https://pan.baidu.com/s/1V3MmZMSbepLyDoOxp23xrw
      提取码:2jxo

      (0) 回复
    还有-4条回复,点击查看
    你还没有登录,请先登录注册
发表回复
你还没有登录,请先 登录或 注册!