unity---寻路导航
寻路导航
1. 简单的寻路
先搭建出类似下面的结构

将你想作为障碍的物体放入一个空物体中

进入空物体点击Static,仅勾选 Navigation Static 即可

依次点击 Window->AI->Navigation,出现如下面板

默认设置,点击烘培bake

蓝色区域为可以通行的区域

红色物体挂载以下组件

再挂载如下脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class Nev0906 : MonoBehaviour
{//鼠标点击某处,物体自动前往鼠标指定地点
// Start is called before the first frame update
public NavMeshAgent nma;
// Update is called once per frame
void Update()
{
if(Input.GetMouseButton(0)){
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit[] hits =Physics.RaycastAll(ray);
foreach(var hit in hits){
string name = hit.collider.gameObject.name;
nma.SetDestination(hit.point);
}
}
}
}
或者是这个简单脚本,自动前往目标物体
大致步骤

坡度烘培

关键在于角度的设置
选路
木头物体走木质桥,另一个物体走另一个桥
- 先搭建相应场景,并且进行简单路径的一些操作
- 给两个桥取一下名字

- 在这个区域写下相应名字

- 在物体组件这选择他能够行走的区域

即可分路径行走
小小补充
选择两个物体然后,勾选Generate OffMeshLinks 自动链接
添加障碍物组件,设置一定的高度后,物体就无法走过
脚本控制一下障碍物
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class ObstateTest : MonoBehaviour
{
// Start is called before the first frame update
NavMeshObstacle _obstacle;
void Start()
{
_obstacle=this.GetComponent<NavMeshObstacle>();
}
// Update is called once per frame
void Update()
{
if(Input.GetMouseButtonDown(0)){
_obstacle.enabled=false;
this.gameObject.GetComponent<Renderer>().material.color=Color.green;
}
if(Input.GetMouseButtonUp(0)){
_obstacle.enabled=true;
this.gameObject.GetComponent<Renderer>().material.color=Color.blue;
}
}
}
unity---寻路导航的更多相关文章
- 【Unity笔记】寻路导航Navigation中的区域Areas与消耗Cost
Navigation寻路导航界面下,Areas分页下是在给导航区域分类(相当于分层),以及为每个分类设置不同的消费Cost,意义在于,导航算法中会计算出的是累加起来消耗最低的路径(不一定是视觉上最短可 ...
- Unity3D寻路导航烘焙
在初次进行3D(三维)游戏体验中,避免不了对游戏有生疏的情况,因此在游戏中一般会插入新手指导.自动寻路.导航地图等AI人工智能技术到游戏中,方便玩家更快体验,为了玩家的体验更好,Unity3D寻路导航 ...
- 【Unity笔记】寻路导航用NavMeshObstacle做动态阻挡
通常情况下,静态的场景中,给场景物体静态标记中勾选Navigation Static后,在导航界面进行导航网格的烘培,可以得到一个静态的导航网格. 但是由于导航网格是静态烘焙好了的,游戏中动态生成的物 ...
- Unity寻路的功能总结
源地址:http://blog.csdn.net/sgnyyy/article/details/21878163 1. 利用Unity本身自带的NavMesh 这篇文章已经比较详细,可能对于很多需要a ...
- Unity寻路的动态烘焙
随着Unity5.6的推出,我们终于迎来了NavMesh的动态烘培,我们期待已久的功能终于来了,不用再研究A*算法了,话说改进的网格寻路更加方便高效. 网址:https://blog.csdn.net ...
- Unity NavMesh导航网格 初级教程
目的:要实现的功能就是你点击一下地图上的某个地方,人物就向着那个点移动.有点自动寻路的味道. 例子:三国群英传,三国赵云传之类的游戏里面的人物移动就可以用这个实现.还有一个我不太喜欢玩的游戏英雄联盟 ...
- 关于Unity中网格导航与寻路
寻路思路 1.烘焙出地形数据,导航数据,区分哪些是路径,哪些是障碍物 2.给要寻路的角色添加寻路的组件,加好了以后就会有速度和目的地之类的参数设置 3.只要设置好目的地,角色就会根据烘焙好的地图自己走 ...
- A星寻路算法入门(Unity实现)
最近简单学习了一下A星寻路算法,来记录一下.还是个萌新,如果写的不好,请谅解.Unity版本:2018.3.2f1 A星寻路算法是什么 游戏开发中往往有这样的需求,让玩家控制的角色自动寻路到目标地点, ...
- [Unity] A* pathfinding project integrated with influence map
简介 最近一阶段重温了一些关于游戏人工智能方面的书籍. 加强了对influence map的认知.想要亲自动手实现一下. 正如文章标题所示,这篇文章讲的是:如何将influence map的机制融入到 ...
- NavMesh--导航网格寻路
一.概述: NavMesh是3D游戏世界中用于实现动态物体自动寻路的一种技术,他将游戏场景中复杂的结构组织关系简化为带有一定信息的网格, 进而在这些网格的基础上通过一些列的计算来实现自动寻路. 二.简 ...
随机推荐
- 登陆界面回车(enter)点击登陆;
<script>//注册按键事件document.onkeydown = keyListener;function keyListener(e) {// 当按下回车键,点buttonif ...
- SQL之总结(二)
4.关于取两个日期之间的年份: ceil(MONTHS_BETWEEN(sysdate, c.sendtime)/12) workTime ceil(n) 取大于等于n的最小整数 floor(n) 取 ...
- Java到底是编译还是解释型语言?编译和解释型语言有什么区别?
7.java语言执行过程与方式: 编译型语言: 是指使用专门的编译器.针对特定平台(操作系统)将某种高级语言源程序一次性"翻译"成可被该平台硬件运行的机器码(包括指令和数据),并包 ...
- 用 JS(JavaScript )实现增删改查
JS小例题 学习内容: 需求 总结: 学习内容: 需求 用 JavaScript 实现简单增删改查 实现代码 <!DOCTYPE html PUBLIC "-//W3C//DTD HT ...
- Jar 包下载以及 maven jar 包配置
学习内容: jar包下载是我们必须掌握的一个内容,不管是使用Maven项目还是其他项目,一般都需要引入外部的 jar 包 jar包下载 下载地址(打不开网址的直接百度搜索 maven reposito ...
- spring报错can't find resources
整合spring的时候报错can't find resource[../././.xml] 这两天在整个spring,发现单元测试的时候就可以正常运行,放在tomcat中就报错initial cont ...
- C语言之:结构体动态分配内存(利用结构体数组保存不超过10个学生的信息,每个学生的信息包括:学号、姓名和三门课(高数、物理和英语 )的成绩和平均分(整型)。)
题目内容: 利用结构体数组保存不超过10个学生的信息,每个学生的信息包括:学号.姓名和三门课(高数.物理和英语 )的成绩和平均分(整型). 编写程序,从键盘输入学生的人数,然后依次输入每个学生的学号. ...
- JavaWeb知识梳理(可收藏)
**JavaWeb相关知识 ** 1.Servlet 1.1 Status Code(Http状态码) 1.1xx 请求信息 Http状态码 Http Status Code Http状态码含义中文说 ...
- Java-NIO之Channel(通道)
1:Channel是什么 通道表示与实体的开放连接,例如硬件设备.文件.网络套接字或能够执行一个或多个不同 I/O 操作(例如读取或写入)的程序组件. 1.1:Channel与Stream的对比 St ...
- 动手动脑3&课堂作业(四则运算与继承)
先上结果 Java程序会先把所有的静态模块提取出来优先执行 四则运算主程序代码 1 import java.util.Scanner; 2 3 4 public class main { 5 publ ...





