Unity3D实现NavMesh导航网格寻路
作者:Gary_Leong 发布时间:2021-07-29 05:38:18
标签:Unity3D,网格寻路
NavMesh(导航网格)是3D游戏世界中用于动态物体实现自动寻路的技术。
NavMesh系统是人工智能的一种,它使用一个添加在游戏对象上或者作为游戏对象父物体的名为“导航网格代理”(NavMeshAgent)的组件来控制该游戏对象寻找能够通过的路径,并最终到达目的地。
自动寻路还可以实现绕过障碍、爬上与跳下障碍物、按类别寻找属于自己的道路、动态设置道路中的障碍等技术。
下面用一个简单的Demo来介绍NavMesh的应用:
1.在Scene场景中添加Cube设置场景,如图所示:
2.选择除了主角、目标以及摄像机、直线光以外的所有物体,在Inspector窗口的右上角勾选Static,成为静态物体,并设置成Navigation Static静态类型。
3.在主窗口中选择[Window]→[Navigation],打开Navigation窗口。该窗口用于生成路径寻找所需要的导航网格结构,代理将根据该导航网格进行寻路计算。确保勾选了“Navigation Static”。点击Bake进行烘培。
4.选择需要寻路的游戏对象,为它添加一个NavMeshAgent组件。
5.编写寻路代码,新建一个脚本:
//寻路网格导航
using UnityEngine;
using System.Collections;
public class DemoNavigation : MonoBehaviour
{
private NavMeshAgent agent; //导航代理
public Transform TransHero;
// Use this for initialization
void Start()
{
agent = this.GetComponent<NavMeshAgent>();
if (agent && TransHero)
{
agent.SetDestination(TransHero.transform.position);
}
}
}
运行结果:
这样就实现了NavMesh导航网格寻路。
来源:https://blog.csdn.net/Gary_888/article/details/51438947


猜你喜欢
- 开发中有时候需要自己封装分页排序时,List如何对某一属性排序呢,分享一个小实例,大家共勉,希望能对大家有用,请多多指教。1.Student
- 项目介绍医院管理系统,分为管理员、医生、病人三种角色;管理员主要功能包括:首页、系统管理:医生管理、患者管理、药品管理;预约管理;病史管理;
- 突然想起来flash有碰撞反弹飘动as控制的效果,所以想起来用c#也来做一个桌面飘动碰撞反弹无标题栏窗体。有点像中了恶意病毒广告效果。主要代
- 快速排序是应用最广泛的排序算法,流行的原因是它实现简单,适用于各种不同情况的输入数据且在一般情况下比其他排序都快得多。快速排序是原地排序(只
- 如下所示:<?xml version="1.0" encoding="utf-8" ?>
- 一、一对一关联 1.1、提出需求根据班级id查询班级信息(带老师的信息)1.2、创建表和数据创建一张教师表和班级表,这里我们假设一
- 本文实例为大家分享了Android实现拍照或者选取本地图片的具体代码,供大家参考,具体内容如下总体流程从selectPhotoActivit
- 表单的重复提交: 没有完整的进行一次,先请求表单页面->再提交表单过程而完成数据提交造成的根本原因: 没有完整的进行一次,先请求表单页
- 下面的例子为使用自定义的列表适配器来显示列表。 View Code import android.os.Bundle; import and
- 一. 关于变量在之前的文章中,已经给大家详细地介绍过变量相关的内容,比如变量的概念、命名规范、变量的定义及底层原理等内容。但其实变量还有作用
- 本篇博客我们继续的来聊SpringMVC的东西,下方我们将会聊到js、css这些静态文件的加载配置,以及服务器推送的两种实现方式。当然我们在
- 概述LruCache的核心原理就是对LinkedHashMap的有效利用,它的内部存在一个LinkedHashMap成员变量,值得注意的4个
- 1. 什么是Volley我们平时在开发Android应用的时候不可避免地都需要用到网络技术,而多数情况下应用程序都会使用HTTP协议来发送和
- Mybatis log printf工具网页地址: http://www.feedme.ltd/log.htmlMybatis执行的sql的
- MapperScan添加动态配置(占位符)在对Mybatis自动扫描配置中,使用注解配置时,@MapperScan中的配置,通常配置如下:@
- 关于java中遍历map具体哪四种方式,请看下文详解吧。方式一 这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。 M
- 直接上代码吧。昨晚腾讯在线测试遇到的题。螺旋矩阵是指一个呈螺旋状的矩阵,它的数字由第一行开始到右边不断变大,向下变大,向左变大,向上变大,如
- mybatis oracle 自增序列的代码如下所示:<insert id=" insert " useGener
- 递归三要素:1、明确递归终止条件;2、给出递归终止时的处理办法;3、提取重复的逻辑,缩小问题规模。1、1+2+3+…+nimport jav
- 目录1.说明2.先来说下@FunctionalInterface3. 下面来讲讲这个 "::"是干嘛的4. 建立一个Pe