菜鸟入门之路——Unity导航相关笔记

来源:互联网 发布:raft算法 编辑:程序博客网 时间:2024/05/17 05:59

菜鸟入门之路——Unity导航相关笔记

**本人菜鸟一枚,刚接触Unity两个月,为了敦促自己学习所以建立个博客每天记录
学到的新知识或解决的问题,当然,最重要的是希望在贵平台上能够得到诸位大神的指点。**

今天记录的是关于Unity导航的相关知识,希望指正!
最近在做《秘密行动》这个小项目,机器人是自动导航,但是之前一直不明白机器人检测到玩家后的距离计算问题,以下是本人对于距离计算的理解:

1. 命名空间
首先要做的当然是命名空间的引入

using UnityEngine.AI;

2. 声明

//导航组件private NavMeshAgent nav;//导航路径private NavMeshPath path;

3. 获取组件

private void Start(){    //获取导航组件    nav = GetCompontent<NavMeshAgent>();    //路径初始化    path = new NavMeshPath();}

3. 计算

(这里写在了触发器里)

  private void EnemyHearingCheck(Collider other)    {        //计算路径        bool canArrive= nav.CalculatePath(other.transform.position, path);        if (!canArrive)        {            return;        }        //声明路径点数组        Vector3[] points = new Vector3[path.corners.Length + 2];        //设置起点终点        points[0] = transform.position;        points[points.Length - 1] = other.transform.position;        //设置拐点        for (int i = 1; i < points.Length - 1; i++)        {            points[i] = path.corners[i - 1];        }        //声明距离        float distance = 0;        //计算距离        for(int i = 0; i<points.Length -1; i++)        {            distance += Vector3.Distance(points[i], points[i + 1]);        }    }
原创粉丝点击