Unity之实现最短路径自动寻路功能
创作时间:
作者:
@小白创作中心
Unity之实现最短路径自动寻路功能
引用
CSDN
1.
https://blog.csdn.net/qq_62675453/article/details/137753453
在Unity开发中,实现自动寻路功能是游戏开发中的一个重要环节。本文将通过一个简单的项目实例,详细介绍如何使用Unity自带的NavMesh系统来实现物体的自动寻路功能。
- 创建一个新的Unity项目,并创建一个平面Plane。
- 创建三种立方体Cube,我们这里用颜色将它们区分开,设红色方块为障碍、蓝色方块为终点,绿色方块为起点。我们的目的就是通过NavMesh系统让起点方块能绕过障碍方块,自动寻路到终点方块。方块设置后如下,可以多添加一些障碍方块让寻路变得复杂一些,三种方块都需要添加Box Collider组件,使得它们能互相碰撞。
- 在左上角菜单栏选择“Window”->"AI"->"Navigition"打开Navigition面板,并选中“所有障碍方块+地面+终点方块”,点击Navigition面板上的“Object”,把Navigation Static勾选上。
(1)Navigition面板
(2)勾选Navigation Static
继续点击Navigition面板上的“Bake”点击“Bake”,生成导航网格。
(1) Navigition面板上的“Bake”
(2)点击"Bake"
此时平面上所有蓝色的区域都是寻路对象的可行走区域,我们的起点方块需要计算出自己与终点方块的最短距离,移动并接触它。
- 点击起点方块,给它添加一个“Nav Mesh Agent”组件,并添加我们的自动寻路脚本(这里取名为follow),脚本代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class follow : MonoBehaviour
{
public NavMeshAgent nav;
public Transform target;
private void Update()
{
this.nav.SetDestination(this.target.position);
}
}
思路非常简单,定义了一个NavMeshAgent变量nav和Transform变量target,然后在Update方法里调用SetDestination方法要nav去寻找target的位置position。
我们把以上脚本挂载给起点方块,把起点方块的“Nav Mesh Agent”组件作为nav变量,终点方块作为target变量,再运行程序,就可以发现我们的起点方块可以绕过我们设置好的障碍,以最短路径去接触终点方块了。
(1)添加”Nav Mesh Agent”组件
(2)给起点方块“Start Cube”挂载脚本
(3)将”Nav Mesh Agent”组件赋给变量Nav,终点方块“End Cube”赋给变量target
- 运行效果
以上,我们就成功运用NavMesh系统构建了Unity中物体的自动寻路功能。
热门推荐
海南万宁旅游全面交通指南
海边抓的寄居蟹能活几天?——了解寄居蟹的生存条件和饲养技巧
低血压也不容忽视!医生:这2种情况下的低血压,要引起重视
正常血压值是多少 血压值正常标准表
医院病假条是否需要医生签字?全面解析与实务指导
怎么在医院申请病假单?全面指南与实用建议
如何写项目评审管理办法
家庭教育的智慧:家长如何激发孩子的内在动力
探秘怒江国家公园,共赴自然奇遇
重磅研究:基于自然的气候解决方案如何同时造福人类与自然
垂钓鲤鱼的六个最佳钓点选择
野钓鲤鱼的“黄金公式”,从钓位打窝到饵料钓法,全有了!
小学教育专升本考试内容全解析
同样是冲着10环去的,射弩和射箭有啥不一样?
使用Excel计算拟合曲线的数据代入方式
干意面热量揭秘:减肥也能享受的美味选择
1860年,杨氏太极拳创始人,杨露禅唯一存世照片,难得一见!
简化护照申请流程:快速办理护照的攻略
红豆薏米茶:祛湿消肿的养生饮品制作教程
艾灸肚脐的好处与功效
艾灸肚脐的作用及常用灸脐方法
产后口腔溃疡:原因分析与预防建议
纯水检测标准是多少
DIY电脑时CPU该如何选择?i5、i7和i9有什么区别
保障性租赁住房申请指南:轻松安居
甲功五项什么时候检查最准
数字人南京话怎么说
少数民族文化认同研究综述
蛇和什么属相最配?蛇跟什么属相婚配
空军飞行员转业容易吗?转业后是否能去民航开飞机?