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

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

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

  Unity NavMesh导航网格 初级教程-LMLPHP

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

  一、打开Navigation

Unity NavMesh导航网格 初级教程-LMLPHP

  

  二、为地图添加Navigation Static

Unity NavMesh导航网格 初级教程-LMLPHP

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

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

Unity NavMesh导航网格 初级教程-LMLPHP

脚本内容如下:

 using UnityEngine;

 public class MoveToClickPoint : MonoBehaviour {

     NavMeshAgent Agent;
// Use this for initialization
void Start ()
{
Agent=GetComponent<NavMeshAgent>(); } // Update is called once per frame
void Update ()
{
if (Input.GetMouseButtonDown())
{
RaycastHit hit;
if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition),out hit,))
{
Agent.destination = hit.point; //Agent目的地为点击的那个点
}
} }
}

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

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

Unity NavMesh导航网格 初级教程-LMLPHP

现在来运行试试效果吧

05-08 15:14