你可以使用 unity官方提供的 unity导航组件或第三方 unity导航组件,以实现游戏中角色或其他物体的导航。
unity导航组件通常具有多种导航模式,如飞行模式、步行模式、车辆模式等,可以根据不同的需求选择合适的模式。同时,unity导航组件还可以设置路径规划
、目标导航
等功能,以实现更加复杂的导航需求。
导航是生成网格的时候,网格内可以走,网格外不能走
导航的应用
烘培配置、他是通过人的数据生成
设置好点击bake,就会产生这样的网格、蓝色曲云可以行走
使用导航根据鼠标点击移动,自动避障
在移动的物体上添加导航代理组件
代理类型,第二个打开导航设置进入上面的导航面板(不是导航代理组件哈)
在导航中添加代理选项和配置
新建脚本、需要移动的物体上绑定上脚本
using System.Collections;
using System.Collections.Generic,
using UnityEngine;
using UnityEngine.Al;
public class PlayerControl : MonoBehaviour{
private NavMeshAgent agent;
void start(){
//获取代理组件
agent = GetComponent<NavMeshAgent>();
}
void Update(){
//如果按下鼠标
if (input.GetMouseButtonDown(0)){
//获取点击位置
Ray ray= Camera.main.ScreenPointToRay(Input.mousePosition);
//声明射线碰撞的信息
RaycastHit hit;
if(Physics.Raycast(ray,out hit)){
//点击位置
Vector3 point = hit.point;
//设置该位置为导航目标点
agent.SetDestination(point);
}
}
}
}
网格链接和动态障碍物
1、网格障碍物组件
障碍物上把静态去掉
在去掉静态的物体上添加导航网格障碍物组件
点击切割会动态烘培导航、耗性能
如果想要从高台上跳跃下去、那么就需要,点击高台物体,点击导航设置,点击对象,点击生成网格链接
下面参数才能生效
高度设置成10后会有一下几个圆形区域,就是这些位置是可以跳下去的
2、网格链接组件
类似于传送门,从地图的a点到b点
组件总的自动更新位置,物体发生位置改变时,传送位置自动改变
导航区域
设置区域
添加物体静态的勾选
选择物体后,点击导航的对象、点击区域设置、然后重新烘培
特殊需要特殊角色能进入,正常人不能进入的区域,就修改区域遮罩