Unity NavMesh导航网格 初级教程

  目的:要实现的功能就是你点击一下地图上的某个地方,人物就向着那个点移动。有点自动寻路的味道。

   例子:三国群英传,三国赵云传之类的游戏里面的人物移动就可以用这个实现。还有一个我不太喜欢玩的游戏英雄联盟也是可以这样实现的。

   怎么做:  先新建一些东西。如图:

 

  

这个Player我是建了一个椭圆体来用的。建好之后就开始跟着我做吧。

  一、打开Navigation

  

  二、为地图添加Navigation Static

选中plane,勾选Navigation Static,现在可以看到Navigation Layer默认的是Default,修改一下换成Walkable。如果没有Walkable去Layers里面自己手动添加。然后在右下角Bake一下。

  三、为Player添加NavMeshAgent组件,为其新建一个MoveToClickPoint脚本并添加,为其添加刚体组件。

 

脚本内容如下:

 1 using UnityEngine;
 2 
 3 public class MoveToClickPoint : MonoBehaviour {
 4 
 5     NavMeshAgent Agent;
 6     // Use this for initialization
 7     void Start () 
 8     {
 9         Agent=GetComponent<NavMeshAgent>();
10     
11     }
12     
13     // Update is called once per frame
14     void Update ()
15     {
16         if (Input.GetMouseButtonDown(0))
17         {
18             RaycastHit hit;
19             if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition),out hit,100))
20             {
21                 Agent.destination = hit.point;    //Agent目的地为点击的那个点
22             }
23         }
24     
25     }
26 }

 

 一切完成之后运行,你会发现你点击某个地方,Player就会移动到某个地方。但是!注意到我的那个红色的cube了吗?红色的cube我的意图是让他成为障碍物。但是你点击后发现Player根本过不去。好了,现在来跟我做最后一步:

  四、为障碍物添加Navigation Static,将其Navigation Layer换成Not Walkable.最后bake一下。

 

 

现在来运行试试效果吧

posted @ 2015-10-08 15:47  蜀云泉  阅读(1207)  评论(0编辑  收藏  举报