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一下。

现在来运行试试效果吧

时间: 2025-01-12 11:41:10

Unity NavMesh导航网格的相关文章

Unity之导航网格寻路相关参数

1.Object(物体)参数面板 Navigation Static:选中该复选框,则表示该游戏对象将参与导航网格的烘焙. Generate OffMeshLinks:选中该复选框,可以自动根据Drop Height(下落高度)和Jump Distance(跳跃距离)的参数设置用关系线来连接分离的网格(模型). NavigationArea:导航区域设置.在默认情况下分为Walkable(行走区域).Not Walkable(不可行走层)和Jump(跳跃层). 2.Bake(烘焙)参数面板 Ag

[原]Unity3D深入浅出 - 导航网格自动寻路(Navigation Mesh)

NavMesh(导航网格)是3D游戏世界中用于实现动态物体自动寻路的一种技术,将游戏中复杂的结构组织关系简化为带有一定信息的网格,在这些网格的基础上通过一系列的计算来实现自动寻路..导航时,只需要给导航物体挂载导航组建,导航物体便会自行根据目标点来寻找最直接的路线,并沿着该线路到达目标点. 下面通过一个简单的Sample来介绍NavMesh的应用: 1.在Scene中新建三个Cube,如下图摆放. 2.选中上图三个Cube,并在Inspector面板中选中为静态(static)下拉选项的Navi

【Unity】第12章 导航网格和寻路

开发环境:Win10.Unity5.3.4.C#.VS2015 创建日期:2016-05-09 一.简介 NavMesh(导航网格)是3D游戏世界中用于实现"动态"物体自动寻路的一种技术,它将游戏场景中复杂的结构组织关系简化为带有一定信息的网格,在这些网格的基础上,再通过一系列相应的计算,实现自动寻路最终找到目标. Unity可以根据编辑的场景,自动生成用于导航的网格.导航时,只需要给被导航的物体挂载导航组件,该物体便会自行根据导航的目标点来寻找最合适的路线,并沿着该路线行进到目标点.

A*算法、导航网格、路径点寻路对比(A-Star VS NavMesh VS WayPoint)

在Unity3d中,我们一般常用的寻路算法: 1.A*算法插件 与贪婪算法不一样,贪婪算法适合动态规划,寻找局部最优解,不保证最优解.A*是静态网格中求解最短路最有效的方法.也是耗时的算法,不宜寻路频繁的场合.一般来说适合需求精确的场合. 与启发式的搜索一样,能够根据改变网格密度.网格耗散来进行调整精确度. 使用较好的地方: a.策略游戏的策略搜索 b.方块格子游戏中的格子寻路 2.U3D自带的导航网格系统 U3D内置了NavMesh导航网格系统,一般来说导航网格算法大多是"拐角点算法"

【Unity】12.2 导航网格寻路简单示例

开发环境:Win10.Unity5.3.4.C#.VS2015 创建日期:2016-05-09 一.简介 本节通过一个简单例子,演示如何利用静态对象实现导航网格,并让某个动态物体利用导航网格自动寻路,最终找到目标. 二.设计步骤 1.添加3个Cube 启动Unity应用程序打开ch1201_Navmesh_Sample工程,新建一个名为Demo1-1.unity的场景,然后在场景中创建3个Cube,如下图所示: 2.生成导航网格 (1)将3个Cube全变为Static 分别选中游戏场景中的3个C

Unity导航网格参数

Navigation Object:物体参数面板 Navigation Static:勾选后表示该对象参与导航网格的烘培. OffMeshLink Generation:勾选后可跳跃(Jump)导航网格和下落(Drop). Bake:烘培参数面板 Radius:具有代表性的物体半径,半径越小生成的网格面积越大. Height:具有代表性的物体的高度. Max Slope:斜坡的坡度. Ste Height:台阶高度. Drop Height:允许最大的下落距离. Jump Distance:允许

NAV导航网格寻路 一些必要的计算几何知识

转载:http://blog.csdn.net/ynnmnm/article/details/44833007 NAV导航网格寻路 -- 一些必要的计算几何知识 在继续下面的nav网格生成算法之前,先介绍一下涉及到的计算几何知识.这里只罗列出结论,要详细了解参考相关书籍. 矢量加减法: 设二维矢量P = ( x1, y1 ),Q = ( x2 , y2 ),则矢量加法定义为: P + Q = ( x1 + x2 , y1 + y2 ),同样的,矢量减法定义为: P - Q = ( x1 - x2

NAV导航网格寻路(2) -- 寻路方法

这篇是转的文章,原文http://blianchen.blog.163.com/blog/static/1310562992010324046930/ nav寻路一般包含两部分,首先是使用工具根据地图信息生成寻路用的nav mesh,接下来就是在游戏中根据生成的nav mesh来自动寻路. 一般人首先关心的就是寻路方法,所以这里把顺序颠倒下,先说寻路. 一.  使用A*寻找所经过网格路径 下图为一个已经生成nav网格的地图,深红色区域为不可行走区域,浅红色区域为可以行走的区域. 如下图,现在如果

导航网格寻路

静态烘培 添加NavMeshAgent组件 让角色添加脚本控制 public Transform TraGoals;                             //寻路目标 private NavMeshAgent _Agent;                           //寻路代理 void Start () { //得到寻路代理 _Agent = this.gameObject.GetComponent<NavMeshAgent>(); }//Start_end