Unity零基础到入门 ☀️| Navigation导航系统—导航角色学习

举报
呆呆敲代码的小Y 发表于 2021/10/29 18:47:18 2021/10/29
【摘要】 💚导航角色(NavMeshAgent)场景布置完了,导航网格设置好了,下一步就是给需要进行导航的物体添加上NavMeshAgent组件 🚩NavMeshAgent属性面板介绍一起来看看NavMeshAgent的属性面板介绍一下该组件的属性面板AgentSize(角色大小)Radius(半径)Height(⾼度)Base Offset(偏移量)导航⻆⾊与⽹格;中⼼点的偏移量Steerin...

💚导航角色(NavMeshAgent)

场景布置完了,导航网格设置好了,下一步就是给需要进行导航的物体添加上NavMeshAgent组件

🚩NavMeshAgent属性面板介绍

一起来看看NavMeshAgent的属性面板
在这里插入图片描述

介绍一下该组件的属性面板
AgentSize(角色大小)

  • Radius(半径)
  • Height(⾼度)
  • Base Offset(偏移量)
    导航⻆⾊与⽹格;中⼼点的偏移量

Steering(导航过程)

  • Speed(导航过程中
  • ⻆⾊的最⼤速度)
  • AngularSpeed(⻆速度)
  • Acceleration(加速度)
  • Stoping Distance(停⽌距离)
    当前⻆⾊距离⽬标多远时停下
  • Auto Breakting(⾃动减速)
    当⻆⾊快达到⽬标时⾃动减速

Obstacle Avoidance(躲避障碍物)

  • Quality(导航质量)
  • Priority(优先级)

Path Finding(寻路设置)

  • Auto Traverse Off Mesh Link
    ⾃动跨越分离路⾯
  • Auto Repath
    ⾃动重新规划路径
  • Area Mask
    分层剔除(设置⻆⾊可以⾛哪些层)

🚩常用属性和方法

下面是导航角色常用的一些属性方法介绍

在这里插入图片描述
知道了NavMeshAgent的面板属性和常用属性和方法之后

我们来写一个脚本,简单的执行一下导航,看一看到底是个啥效果呢!

创建一个NavigationTest脚本,代码如下

Tip:使用NavMeshAgent组件要先导入UnityEngine.AI命名空间,要不然会报错的哦!

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;//导入命名空间

public class NavigationTest : MonoBehaviour
{
    private NavMeshAgent navMeshAgent;

    private void Start()
    {
        navMeshAgent = gameObject.GetComponent<NavMeshAgent>();
    }

    private void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit))
            {
                Transform parent = hit.collider.transform.parent;
                if (parent != null )
                {
                    navMeshAgent.SetDestination(hit.point);
                }
            }
        }
    }
}

脚本内容很简单,就是拿到这个NavMeshAgent组件之后

  • Update中进行判断,当点击鼠标左键的时候
  • 开启射线检测,记录下当前鼠标点击的物体
  • 然后利用SetDestination方法,将鼠标点击的位置设置成导航的目的地

这样就会出现,我们鼠标点击一个位置,只要导航能到的地方就会按照导航自动计算出的最短路径进行自动寻路了!

将这个脚本挂到这个胶囊体上就好了,下面是演示效果:
请添加图片描述
Tip:如果胶囊体上不去这个台阶,那就是说明BakeStep Height(⻆⾊可以上的台阶⾼度)数值太小,适当改一下即可

这里还有一个小知识,就是我们在寻路的时候,我们寻路的角色在Scene场景中会出现三个红蓝黑箭头,如下图所示

  • 红⾊箭头 :代表 指向(阶段性⽬标)
  • 蓝⾊箭头 :代表 期望速度
  • ⿊⾊箭头 :代表 瞬时速度
    请添加图片描述
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。