烘焙地图
- 选中场景中要烘焙的游戏物体。将详情面板中的Static更改为Navigation Static。
- 选择Window → Navigation。
- 点击新打开的Navigation → Bake → 调整具体参数 → 点击最下方的Bake进行烘焙。
以上功能便是将能够寻路的地图烘焙好了 - 创建一个胶囊体,在胶囊体上添加 Nav Mesh Agent组件
// 寻路组件
NavMeshAgent nav;
// 动画组件
Animator ani;
private void Start() {
// 获得要寻路的游戏物体
var obj = GameObject.Find("Player");
// 获得游戏物体上的寻路组件
nav = obj.GetComponent<NavMeshAgent>();
// 获得游戏物体上的动画组件
ani = obj.GetComponent<Animator>();
}
void Update() {
// 获得一条射线
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
射线碰撞信息
RaycastHit hit;
// 若射线发生了膨胀
if( Physics.Raycast(ray, out hit, 1000, 1 << 6)) {
// 设置寻路组件的目的地
nav.SetDestination(hit.point);
}
// 改变游戏物体上动画跳转参数(要先做好待机和移动的动画融合树)
// 在这里给到的参数是当前速度,速度会从零一直增加到最大速度,动画也是有过度动画的。
ani.SetFloat("Speed", nav.velocity.magnitude);
}
若是以上操作能够使角色进行寻路,但角色跑步和角色转向与角色移动衔接很不自然可以试着调整寻路组件上的部分参数
NavMeshAgent 寻路组件
Base Offset
偏移量,空中飞行的游戏物体需要按照地面进行寻路,可以适当调节。Speed
最大移动速度。Angular Speed
最大转角速度,可以给大点,方便场景中的游戏物体能够快速的转向。Acceleration
加速度,这个也可以稍微给大点,方便能够快速相应。Stopping Distance
停止寻路距离。
Nav Mesh Obstacle 动态遮挡物
Carve
是否截断,能否通过。
动态遮挡物不要选择Navigation Static,因为选中烘焙后改变其动态遮挡物位置后之前的位置也是不能够进行移动的。
标签:游戏,寻路,烘焙,组件,NavMeshAgent,Navigation From: https://www.cnblogs.com/wuzhongke/p/16837516.html