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中物体的自动寻路功能。
热门推荐
如何在办公室优雅地放屁?
放屁多不仅尴尬,还可能影响心理健康!
妙佑医疗推荐:益生菌+抗性淀粉改善放屁多
吃豆子真的会放很多屁吗?
给“扮演蒋介石”的10位演员排名:马晓伟未进前3,前两位已去世
花椒粉的正确使用方法:7种实用技巧让你的烹饪更上一层楼
不要错过紫色!今年秋天穿它很流行,看看轻熟风格搭配示范
如何预防肌肉拉伤?做好五步预防肌肉拉伤
马来西亚8月起下调新柔短程火车票价至1.4新元
兵马俑vs大雁塔:西安两大景点深度对比
冬日探秘:大雁塔与骊山的文化之旅
鹅绒的国家标准检测与质量控制
惠州美食小吃中三宝是什么
惠州美食小吃中的“三宝”:梅菜扣肉、东江盐焗鸡和东江酿豆腐
交通违章行为交警会如何处罚
只需两味药!成就千古乌发名方「二至丸」
文化之旅:新加坡的 13 家博物馆和机构
二至丸,在寒冷的冬季帮我们调养身体
健康饮食如何防止常见疾病的发生
蜀地中医药走向世界丨中医药成果转化走向国际市场
鬼谷子纵横术口诀解析
车辆违章多久能收到违章信息
为何猪油不宜多吃
一勺猪油=五服药?猪油到底是食疗佳品还是健康“杀手”?真相是......
惠州大亚湾一日游,美食美景一网打尽!
持续葡萄糖监测(CGM)如何成为糖尿病患者的控糖神器?
肌肉拉伤的病因、分级、处理措施及预防
肌肉拉伤的病因、分级、处理措施及预防
跑步训练及跑马完赛后,吃什么才能更快恢复?
“换一块电池比买车还贵” 首批新能源车主的八年之痒