前言
Navigation可以使物体智能的移动到某个位置,这样可以在游戏完成一些NPC的智能路径和主角的寻路功能
1,对于场景进行渲染
将场景需要烘培的物体设为静态:
首先选中需要烘培的物体,然后在inspector面板中右上角将物体设为静态物体,这样可以对物体进行烘培
打开NaNavigation(导航)烘培面板:
在windows中找到AI点击后出现Navigation面板,
在navigation中对于烘培进行设置:
对于Bake的相关参数进行,修改可以实现渲染的效果,比如攀爬楼梯、跳过沟壑、从高处跳下等功能的实现,调整下面的参数,可以在上面的示意图上实时展示出来
- 参数的相关含义:
- Agent Radius:定义网格和地形边缘的距离
- Agent Height:定义可以通行的最高度
- Max Slope:定义可以爬上楼梯的最大坡度
- Step Height:定义可以登上台阶的最大高度(最大高度要小于可通行的最大高度)
- Drop Height:允许最大下落距离
- Jump Distance:允许最大的跳跃距离
- 渲染后的效果为:
淡蓝色区域即为角色可以移动的区域
对于Navigation中其他三个选项的设置
- Object选项
选中场景中一个物体后,Object中会出现如图选项,基本的设置选项如图,可以通过调整对对象的烘培,使得角色是否可以在该区域移动或者跳跃
- Areas面板
Areas主要是用来设置不同区域的权值,这样可以确保角色优先在哪个区域移动(默认Jump权值高,这样在Object将物体设置为Jump时,没路时,物体会选择跳跃,而不是绕一大圈)
- Agents面板
这个面板主要是角色添加Nav Mesh Agent组件时使用的
2、可以移动的动态障碍
直接给物体添加Nav Mesh Obstacle组件,通过设置参数,则可以形成动态移动的障碍物:
3、NPC移动设置
给NPC添加Nav Mesh Agent组件
添加组件后,对相关参数进行设置:
- Steering(操纵)
- Speed:最大移动速度
- Angular Speed: 行进时的最大角速度
- Acceleration:最大加速度,控制速度的变化快慢
- Stopping Distance:制动距离,到达目标点的距离小于这个值
- Auto Braking:勾选,到达目标点后停止运动,没有缓冲运动
常用API:
- ActivateCurrentOffMeshLink :激活或禁止当前off-MeshLink.
- CalculatePath :计算到某个点的路径并储存
- CompleteOffMeshLink :完成当前offMeshLink的移动
- Move :移动到相对于当前位置的点
- ResetPath :清除当前路径
- SetDestination :设置目标点
- SetPath :设置一条路线
- Warp :瞬移到某点
- remainingDistance:到目标点的距离
- desiredVelocity:期望速度,方向指向的是到达目标点的最短路径的方向
编写代码控制物体移动
实现让角色通过系列的物体:
public GameObject[] pos; //定义系列点的数组
private NavMeshAgent nav; //定义一个NPC导航组件(一定要添加在头文件UnityEngine.AI类
private int nub = 0; //定义一个整数
获取物体NavMeshAgent组件:
void Start()
{
nav = GetComponent<NavMeshAgent>();
}
进行碰撞检测,如果物体达到相应物体,则数组移动到下一个:
private void OnTriggerEnter(Collider other)
{
if(other.gameObject.tag=="object") nub++;
}
最后则是要控制物体导航到指定点,调用API接口destination:
void Update()
{
if (Vector3.Distance(transform.position, pos[nub].transform.position) >= 0.1f)
{
nav.destination = pos[nub].transform.position;
}
}
总结
使用NavNavigation是一个比较复杂的流程,但是掌握方法,就会很简单,多学习多使用
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!