导航网格是unity开发的简单实用的工具,使用者不需要编写复杂的A*算法或其他的算法就可以实现一些基本的导航功能,下面让我们来一起学习一下吧。

目录

一、创建平面和物体

二、打开导航网格功能

三、导航设置

四、脚本设置

1.物体二静止

2.物体二逃跑

3.物体二欲拒还迎

4.做一个有原则的方块


一、创建平面和物体

平面可以用材质球使它变成黑色的

随便创建两个物体,分别命名为1和2

二、打开导航网格功能

这里我用的版本是2020的,打开windows点击AI点击Navigation之后,可以在右侧视图旁边看到多出一个标签三、导航设置

三、导航设置

为物体1添加Nav Mesh Agent 代理这个组件

先点击Plane,右侧的Navigation 组件点击静态,随后进行渲染(Bake)。

四、脚本设置

1.物体1运动脚本

代码中的公共变量target就是物体2,要把物体2赋值给物体1

using System.Collections;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.AI;//添加封装的对象
///<summary>
///
///<summary>public class Track : MonoBehaviour
{public GameObject target;NavMeshAgent agent;private void Awake()//第一次调用,初始化文件{agent = GetComponent<NavMeshAgent>();//调用组件}private void Update(){agent.SetDestination(target.transform.position);//定位物体二即目标的位置}
}

这时候好像是1去追求2,2也愿意,所以2不动在原地等着,没一会就追到了。

2.物体2逃跑

1去追求2,2不愿意,所以我们给它添加一个逃跑的程序,让1在后面追赶,这是物体2的代码要挂载在物体2上

using System.Collections;
using UnityEngine;
using UnityEngine.UI;
///<summary>
///
///<summary>public class Flee : MonoBehaviour
{public float speed;private void Update(){this.transform.Translate(0,0,Time.deltaTime);//给物体2一个速度}
}

3.物体二欲拒还迎

这是物体2的脚本,要挂载在物体2上

2是一个有战术的物体,它想要别人追它,又不想让它跑了,所以当距离过大时,它就停下来等一会,距离过小时,它就往前走一会

using System.Collections;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.AI;
///<summary>
///
///<summary>public class Flee : MonoBehaviour
{public float speed=10.0f;public GameObject dog;private void Update(){if(Vector3.Distance(dog.transform.position, transform.position)>5.0f){this.transform.Translate(0, 0, 0);//让它静止}else{this.transform.Translate(0, 0, speed*Time.deltaTime);//给物体2一个速度speed += 5;}}
}

4.做一个有原则的方块

这是物体1的脚本,要挂载在物体1上

想吊着你,这可不能答应,一般会有几种选择:

猛烈进攻,追上它(快速提升速度和加速度)

using System.Collections;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.AI;//添加封装的对象
public class Track : MonoBehaviour
{public GameObject target;NavMeshAgent agent;private void Awake()//第一次调用,初始化文件{agent = GetComponent<NavMeshAgent>();//调用gameObject.GetComponent<NavMeshAgent>().speed=10;//调用组件的速度gameObject.GetComponent<NavMeshAgent>().acceleration = 10;//调用组件的加速度}private void Update(){agent.SetDestination(target.transform.position);}
}

Unity 导航网格的使用相关推荐

  1. Unity --- 导航网格 与 导航的使用

    导航网格和导航组件有关 这个导航组件有啥用呢? --- 答案就是用来进行寻路的 这个导航组件不仅帮我们获取对应的导航信息,而且还会帮我们进行位置的移动 有了导航组件的话,我们的游戏物体将会具有自动绕过 ...

  2. 【Unity VR开发】结合VRTK4.0:导航网格限制移动区域

    前言: 当别人质疑你的时候千万不要当一回事,因为他只是看到了表面,也不要去相信公司领导给你的承诺,在你付出的时候,他会觉得很满意,但过去了这风波,你就会像空气一样,什么也不是,你永远没有资格跟他说三道 ...

  3. 《UnityAPI.NavMeshAgent导航网格代理》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+Unity+NavMeshAgent+立钻哥哥++OK++)

    <UnityAPI.NavMeshAgent导航网格代理> 版本 作者 参与者 完成日期 备注 UnityAPI_NavMeshAgent_V01_1.0 严立钻 2020.09.10 # ...

  4. 《UnityAPI.NavMesh导航网格》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+Unity+NavMesh+CalculatePath+立钻哥哥++OK++)

    <UnityAPI.NavMesh导航网格> 版本 作者 参与者 完成日期 备注 UnityAPI_NavMesh_V01_1.0 严立钻 2020.08.27 #<UnityAPI ...

  5. Unity导航寻路系统插件--A* Pathfinding Project

    Unity的A*寻路是很常用的功能,比如LOL里面的鼠标点击行走,那么一般情况下做这个导航寻路系统的时候会用两种方式去完成,第一种就是Unity里面自带的NavMeshAgent,第二种就是在Unit ...

  6. Unity3D导航网格,矩阵旋转,欧拉旋转

    旋转(欧拉.矩阵) 1.Transform:position(平移).rotation(旋转).scale(缩放). 2.四元数:应于transform组件中的rotation属性,这个属性的类型其实 ...

  7. Cocos Creator3.x NavMesh导航网格寻路(一)

    前言 在游戏开发过程中,寻路可能是大多数游戏都必不可少的功能.2d游戏中最常用的就是A* 寻路了.在3d游戏中,对于一些简单的,没有高度地面A* 寻路同时也是可以使用的,但是对于一些地面比较复杂的游戏 ...

  8. Cocos Creator3.x NavMesh导航网格寻路

    前言 在游戏开发过程中,寻路可能是大多数游戏都必不可少的功能.2d游戏中最常用的就是A* 寻路了.在3d游戏中,对于一些简单的,没有高度地面A* 寻路同时也是可以使用的,但是对于一些地面比较复杂的游戏 ...

  9. 了解导航网格 Navigation Mesh

    原文:https://www.jianshu.com/p/490a9128b248 这篇文章,首先会介绍什么是导航网格,它在 3D 游戏中起到了什么样的作用.然后会介绍目前导航寻路最常用的第三方开源库 ...

  10. UE4学习-AI导航网格的创建及修改

    文章目录 添加NavMeshBoundsVolume 调整网格 添加NavMeshBoundsVolume 如图所示,查找到NavMeshBoundsVolume,添加到场景. 因为我这里的场景大小是 ...

最新文章

  1. 小米正用时序数据库,解决这个“硬核”问题
  2. Go语言讲解深拷贝与浅拷贝
  3. 记录一个自动创建分区的脚本
  4. 涨跌因子计算器下载哪里下载_微信爱情指数计算器整蛊app下载_爱情指数计算器整蛊测试下载...
  5. 【自制工具类】Java删除字符串中的元素
  6. 工作164:对父和混入的理解
  7. 雅可比行列式_夏七八写:关于“斜二测画法”与雅可比行列式的关系的想法
  8. python3迭代器是什么,python3 迭代器
  9. C语言原码、反码、补码
  10. 使用命名空间别名限定符 ::
  11. 修改树状控件TreeCtrl的节点名称
  12. C++调用 Json解析与处理库
  13. 用reloadRowsAtIndexPaths刷新单个cell 跳动问题
  14. 安卓手机通话录音软件
  15. 搭建web项目常见错误
  16. Symbian游戏编程入门 (一) Symbian OS简介
  17. 服务器运维有夜班吗,运维倒班之所获
  18. python从键盘输入一个数、判断其是奇数还是偶数_从键盘上任意输入一个正数,判断是奇数还是偶数...
  19. Python高并发爬虫测评(2): 多进程, 多线程和异步协程哪个快?
  20. 用joern画AST、CFG、CDG、DDG、PDG、CPG

热门文章

  1. 我对秒杀在技术性上的一些看法
  2. 网站采集软件,全自动网站文章采集器,一键网页数据抓取
  3. Office2007 PDF/XPS格式插件下载
  4. Linux公网渗透抓鸡实验
  5. Ubuntu 系列学习(四)ubuntu 22.04 安装 微信、QQ
  6. 权重的计算方法,主要有两种:1.线性加权法; 2.层次分析法
  7. 简单的matlab阶乘计算
  8. JZOJ6734. 【2020.06.18省选模拟】航行
  9. windows下grep的安装与使用
  10. java正则表达式的减号_JAVA正则表达式