【Unity开发】随手记:自动寻路技术

205 阅读1分钟

【Unity开发】随手记:自动寻路技术

写在前面

本系列为笔者实在是不想写作业,来通过写博客勉励自己一下。参考教程为《Unity 3D游戏开发》(中国工信出版集团),大部分代码和注释来源于这个博主,姐妹万岁哈哈哈哈🤣。
文章中只放代码(随缘附少量基础讲解和效果),项目操作可以自行百度or留言,防止太长一篇1~3个案例,案例来源于哈工大(威海)王峥老师布置的作业。

自动寻路技术

包括:跨断桥,绕障碍和跳屋顶。这里只演示绕障碍。

  • 首先创建地形Plane,往其中添加障碍块等地形。在Navigation界面障碍块设置为Not Walkable,将地形设置为Walkable
  • Bake一下
  • 为要移动物体添加代理,默认参数即可
  • 编写脚本,使得立方体从当前位置走向小球位置
    void Start()
    {
        navMeshAgent = this.GetComponent<NavMeshAgent>(); //获取挂在该脚本的对象上的代理器组件
        navMeshAgent.speed = MoveSpeed; //设置寻路器的行走速度
        if (navMeshAgent == null)
        {
            navMeshAgent = gameObject.AddComponent<NavMeshAgent>();
        }
    }

    void Update()
    {
        if (navMeshAgent != null)
        {
            navMeshAgent.SetDestination(target.position); //设置寻路目标
        }
    }