本文详细介绍了在Unity中使用Navigation模块实现自动寻路功能,包括场景渲染、NPC移动设置和动态障碍物处理。通过配置Agent Radius、Agent Height等参数,设定角色移动规则。同时,利用Nav Mesh Obstacle组件创建动态障碍,并通过Nav Mesh Agent控制NPC智能移动,实现游戏中的复杂路径规划。
摘要生成于
,由 DeepSeek-R1 满血版支持,
将场景需要烘培的物体设为静态:
首先选中需要烘培的物体,然后在inspector面板中右上角将物体设为静态物体,这样可以对物体进行烘培
打开NaNavigation(导航)烘培面板:
在windows中找到AI点击后出现Navigation面板,
在navigation中对于烘培进行设置:
对于Bake的相关参数进行,修改可以实现渲染的效果,比如攀爬楼梯、跳过沟壑、从高处跳下等功能的实现,调整下面的参数,可以在上面的示意图上实时展示出来
- 参数的相关含义:
Agent Radius:定义网格和地形边缘的距离
Agent Height:定义可以通行的最高度
Max Slope:定义可以爬上楼梯的最大坡度
Step Height:定义可以登上台阶的最大高度(
最大高度要小于可通行的最大高度
)
Drop Height:允许最大下落距离
Jump Distance:允许最大的跳跃距离
- 渲染后的效果为:
淡蓝色区域即为角色可以移动的区域
对于Navigation中其他三个选项的
Navigation
相关组件
导航网格(即
Navigation
Mesh,缩写为 NavMesh)
是一种数据结构,用于描述
游戏
世界的可行走表面,并允许在
游戏
世界中寻找从一个可行走位置到另一个可行走位置的路径。该数据结构是从关卡几何体
自动
构建或烘焙的。
导航网格代理 (NavMesh Agent)
组件可帮助您创建在朝目标移动时能够彼此避开的角色。代理使用导航网格来推断
游戏
世界,并知道如何避开彼此以及移动的障碍物。
网格外链接 (Off-Mesh Link)
组件允许您合并无法使用可行
Unity
简单
实现
自动
寻路
功能
在很多
游戏
中,敌人经常要在复杂的地形中追着主角跑。这就需要敌人不仅要绕开这些障碍物,还得要找到到目标点最近的路线。如果让我们自己手动
实现
这个算法是比较又挑战性的。好在
Unity
提供了一个非常实用的
寻路
功能
,只需要较少的代码即可
实现
复杂的
功能
。
1、创建场景,比如我们想要让绿球避开这些方块到达红球的位置。
2、选中场景,单机Inspector视图窗口...
1.静态简单导航
(1)不改变导航期间,路障的情况,并且不能进行跳跃类操作,即连续不跳跃类
<1>首先建立如下模型,其中四周墙壁和中间的黄色墙壁为障碍物,胶囊和小球分别为起点和终点。要求:胶囊从起点位置出发,绕过四条黄色的柱子,到达小球位置。
选择地面和所有障碍物
点开箭头。将这些调整为Naviagtion static类型
<3>选择capsule,添加脚本和Nav Mesh Agent组件
using S
Unity
使用导航 生成网格之后,用NavMeshAgent控制AI追逐玩家,因为玩家控制的角色处于网格范围之内,在AI移动的过程中玩家可以无视碰撞穿过AI。
这个问题有很多解决方法,比如禁用掉NavMeshAgent的控制,只提供运动的方向和速度,改用脚本控制AI的移动。也可一用插件动态烘培网格。但是就是想偷懒嘛,所以用了个简单的方法解决的此问题。
因为发现拥有NavMesh...