U3D的navmesh寻路

寻路大致分三种:A*(格子),waypoint(路点),navmesh(网格)寻路。这三种寻路各有优劣,这里要说的是navmesh,navmesh是比前面两种要新的寻路算法,同时也是U3D官方提供的算法。

http://www.unitymanual.com/thread-611-1-1.html

http://www.unitymanual.com/thread-613-1-1.html

http://www.unitymanual.com/thread-615-1-1.html

 

http://game.ceeger.com/search.php?keyboard=NavMesh

 

U3D跟navmesh相关的东西并不多,3个组件,一个视图:
U3D的navmesh寻路_第1张图片
U3D的navmesh寻路_第2张图片

NavMeshAgent:添加了这个组件的GO对象,都具备寻路的能力。
U3D的navmesh寻路_第3张图片
Radius 半径: 代理的半径(仅用于寻路目的,可以跟实际对象的半径大小不一样,一般比实际对象的半径大)。
Speed 速度: 代理可以周游世界,走向它的目的地的最大移动速度。
Acceleration 加速度: 最大加速度。
Angular Speed 角速度: 最高转速(度/秒)。
Stopping distance 制动距离:制动距离。到目的地的距离小于这个值,代理减速。
Auto Traverse OffMesh Link 自动遍历OffMesh链接:自动移动并关闭OffMeshLinks(这个的意思是直接从连接点的这边移动到那边,一般都要自己做些处理)
Auto Repath 自动重新寻路:如果现有的部分已失效,获得新的路径。
Height 高度:代理的高度(用于调试图形)。
Base offset 基本偏移:碰撞几何体相对于实际几何体垂直的偏移。
Obstacle Avoidance Type 障碍躲避类型 :躲避的质量水平。
NavMesh Walkable 导航网格行走:指定代理可以遍历的导航网格层类型。这个参数很有用,在接下来的实例中可以用到。(这个是设置层的,让代理对象仅仅在目标层移动

 

OffMeshLink:链接点,对于比较复杂的地形来说,这种连接点还是挺有用的

U3D的navmesh寻路_第4张图片
Start:开始

End:结束

Bi Directional:双向定向

Activated:激活

 

NavMeshObstacle:障碍
U3D的navmesh寻路_第5张图片

比较有用的是半径和高度,拥有此组件的物体被看做为障碍物。

 

Navigation视图:

三个分页:object可以看做是对选中对象的操作。Bake烘焙出网格。Layers定义层,这个层在寻路的时候会起作用。

Navigation Static:勾选后,选中的对象会生成静态网格

OffMeshLink Generatic:自动生成连接点,对于有沟,有坡的地方

Navigation Layer:设置当前模型生成的静态网格的层次。

 

基础完整步骤:

1.创建地形和各种障碍,这个时候有两种选择,一种是通过视图界面,把这些设置为静态网格然后烘焙。另一种是通过添加组件的方式,把障碍设置为障碍。

2.创建角色,为角色添加代理组件,代理组件有个目标对象,这个目标对象是角色需要走到的位置的对象。

3.建立桥连接,同样是两种方式,一种是在视图里面勾选自动生成连接点,另一种放是为需要添加连接点的对象,添加一个连接点的组件,然后手动为组件指定两个连接点。

 

 

public class baseTest: MonoBehaviour{
    private NavMeshAgent man;
    public Transform target;
    void Start (){
        man = gameObject.GetComponent();
    }

     void Update (){
          man.SetDestination(target.position);
     }
}

  

 

 

你可能感兴趣的:(U3D)