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一下。
现在来运行试试效果吧