1.新建一个场景,自己搭建物理场景。
2.windows-》Navigation -> Bake.
注意把static标志成navigation Static,默认是none的,bake后无效果,因此需要改成navigation Static
参数一:Agent Radius 影响了边界的效果,如果将之扩大,可走的部分会缩小,1-》5
参数二:影响了可以通过的高度限定
参数三: 可以爬的最大坡度
参数四: 允许可以改变的垂直高度差
接下来创建一个角色,来进行寻路:
创建一个capsule ,添加navmeshAgent组件,通过代码设定他需要去的位置
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class Player : MonoBehaviour {
private NavMeshAgent agent;
public Transform target;
void Start () {
agent = GetComponent<NavMeshAgent> ();
agent.destination = target.position;
}
// Update is called once per frame
void Update () {
}
}
接着运行起来!!!就看到移动啦。
当然如果目标位置是不可以到达的位置,会移动到离这个目标位置最近的,可以到达的位置。类似于梦幻西游抓鬼寻路那样。。当然这个是3D寻路
接下来看一下 NavMesh Agent组件里已经封装好的内容:
第一个部分Agent Size是调整角色的碰撞大小
第二个部分steering 是调整角色为了到达目标位置,速度,方向旋转(x的正方向朝着当前运动方向旋转),加速度,离目标位置多远可以停下来,到达目标位置是否会停止运动(我写的顺序和给定的顺序一一对应)