Unity 2022 版本 寻路 NavMesh

官方教程地址
https://docs.unity3d.com/Packages/com.unity.ai.navigation@1.1/manual/index.html

在这里插入图片描述
首先装包
在这里插入图片描述
先给地图 和 阻挡 设置为静态
然后给地上行走的地方 添加组件
在这里插入图片描述
在这里插入图片描述
可以直接bake 然后会显示蓝色的可行走路径

player 添加插件
在这里插入图片描述
在这里插入图片描述
然后给角色添加脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class PlayerMove : MonoBehaviour
{public UnityEngine.AI.NavMeshAgent nav; //获取导航网格代理组件,通过此组件来告知AI目标public Transform target; //目标的位置// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){nav.SetDestination(target.position); //每帧更新目标位置}
}

搞定

跳跃点设置

场景内添加两个圆柱体 并设置为静态 起始圆柱体添加组件 OffMeshLink
并把起始圆柱体和结束圆柱体拖入到下面的start 和 end 里
在这里插入图片描述
设置成功后 他俩之间会连上一根线
在这里插入图片描述
如果距离和位置正确 会显示粗黑色的线 并且圆柱体周围会缠绕一圈黑色的圈
如果失败了 就是浅色的 也没圈 下图是失败的样子
在这里插入图片描述
下图是正确的样子
在这里插入图片描述
在这里插入图片描述
设置成功后 bake一下路径就可以了
然后让你的行动目标点设置为你的结束点 也就是下面那个圆柱体 他就会自动的走到起始点 并移动过去了

你可以看到 两个平面其实是不挨着的
那下面这个平面需要添加NavMeshSurface吗?
在这里插入图片描述
答案是 如果你用 OffMeshLink 给他连接上 那就不需要添加了 他会自动把路径铺上

官方教程地址

https://docs.unity3d.com/Packages/com.unity.ai.navigation@1.1/manual/index.html

障碍物

Nav Mesh Obstacle
不需要设置成静态
添加这个组件后 他就变成了一个障碍物 但是路径上是看不出来的 你的主角移动的时候 也不会绕开他 而是直接顶上去
类似这样
在这里插入图片描述
如果你勾选了 Carve 选项
那么他会变成下面的样子 路径被开了一个口子
在这里插入图片描述
下面的选项 Carve Only Stationary
如果勾选上
那么只有在停下的时候 才会重新构建路径
不停的话 还是会直接装上 顶住的

move threshold 是干啥的呢
他表示 移动多少距离 重新生成路径

time to stationary 的意思是
停止多长时间 会重新生成路径

time to stationary是和 Carve Only Stationary 成对使用的
也就是说 如果勾选了 Carve Only Stationary
time to stationary 才会生效
move threshold 就失效了

如果不勾选 Carve Only Stationary
那么只有 move threshold 生效

现在让这个物体 动起来

public Vector3 vst = new Vector3(-2.71000004f, 0.5f, -2.50999999f);
public Vector3 ved = new Vector3(-2.71000004f, 0.5f, -4.23000002f);
public float speed = 1.0f;
void Update()
{float pingPong = Mathf.PingPong(Time.time * speed, 1.0f);transform.position = Vector3.Lerp(vst, ved, pingPong);
}

在Unity中,Nav Mesh Obstacle组件的carve属性用于控制障碍物是否会改变导航网格的形状。如果启用了carve属性,则当Nav Mesh Obstacle与导航网格重叠时,它会“雕刻”出一个空间,使导航网格围绕该障碍物进行重新生成。

默认情况下,Nav Mesh Obstacle不会雕刻导航网格,而是简单地将其视为障碍物并阻挡导航代理的路径。但是,如果您需要更精细的控制,可以使用carve属性来确保导航代理在遇到障碍物时能够正确地行动。

例如,如果您有一个长方体障碍物,并且想让导航代理能够穿过该障碍物中心,而不是绕过它,那么您可以启用carve属性。这将确保导航网格为该障碍物“雕刻”出一个空间,在导航代理到达障碍物时穿过该空间,而不是绕过它。

请注意,启用carve属性可能会增加导航网格的计算成本,因为它需要重新生成导航网格以适应障碍物的形状。因此,您应该在必要时才使用carve属性,以避免对性能产生不必要的影响。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/593036.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Keil调试STM32卡死在文件startup_stm32f10x_hd.s的B处

———————Keil调试卡死——————— 🎄问题说明 在移植代码完成后调试时候程序卡死在startup_stm32f10x_hd.s文件的B处 🎄复现场景 🎄解决办法 经过查资料,发现是移植的时候,漏掉了终端函数,加上…

MySQL的安装网络配置

目录 一. MySQL5.7的安装 二. MySQL8.0的安装 三. 配置网络访问 思维导图 一. MySQL5.7的安装 1. 解压 2. 将my.ini文件放入到解压文件中 3. 编辑my.ini文件,将路径改为当前路径 4. 进到bin目录下,以管理员身份打开cmd命令窗口 5. 安装MySQL服务 my…

kbdnecat.DLL文件缺失,软件或游戏无法启动运营,快速修复方法

“kbdnecat.DLL文件是什么?为什么一起动游戏或软件,Windows就报错“kbdnecat.DLL文件缺失,软件无法启动””,应该怎么修复呢? 首先,先来了解“kbdnecat.DLL文件”是什么? kbdnecat.DLL是一个动…

Vue中全局事件总线的配置和原理

实现任意组件之间的通信 任意组件通信的原理: 1、实现任意组件之间的通信,需要一个傀儡。这个傀儡既能被vm访问到,也能被VueComponent访问。 2、VueComponent.prototype.proto Vue.prototype为图上1.0黄色的线路。是Vue让组件实例对象VueComponent可以访问到Vue原…

HCIA-Datacom题库(自己整理分类的)——其他网络协议【完】

(一)单选 下列属于链路状态协议的是? Direct static FTP OSPF 解析: FTP:文件传输协议 OSPF:链路状态路由协议 如下图所示的网络主机A通过Telnet登录到路由器A然后在远程的界面通过FTP获取路由器的配置文件&…

学习调整echarts中toolbox位置toolBox工具栏属性

学习调整echarts中toolbox位置toolBox工具栏属性 toolbox工具栏属性介绍示例代码代码参数说明 toolbox工具栏属性介绍 参考网址:https://echarts.apache.org/zh/option.html#tooltip 属性类型说明toolbox.showbooleanboolean 默认值为true,是否显示工具…

studio3T mongodb 根据查询条件去更新集合

mongodb 等于、不等于$ne、不包含 $nin 以及批量更新数据的使用。 业务场景: 在集合中,根据查询条件,更新数据状态。 实现代码: 1. 部门名称为XXX、状态不等于“完好”的、并且不包含这些编码的数据先查询出来2. 再把状态更新成…

This is probably not a problem with npm.

项目场景: 新创建的vue3项目,根据elementplus官网安装步骤进行按需导入安装,运行项目报错 This is probably not a problem with npm.There is likely additional logging output above. 原因分析: 是elementplus安装版本和自动…

玩转贝启科技BQ3588C开源鸿蒙系统开发板 —— 编译构建及此过程中的踩坑填坑(1)

接前一篇文章:玩转贝启科技BQ3588C开源鸿蒙系统开发板 —— 代码下载(2) 本文主要参考: BQ3588C_代码下载 上一回完成了代码下载,本回开始进行编译构建。 1. 编译构建 (1)执行prebuilts 在源…

JavaScript可选链接

注:本节仍然使用之前的饭店的对象,可以看上几篇文章查看代码 ● 如果我们想要看看饭店周一的开门时间,我们会这么写 console.log(restaurant.openingHours.mon.open);原因是我们在开放时间中并没有定义周一的开放时间,所有会报错…

2024年工作计划与目标怎么写?如何用手机制作工作待办清单

2024年的钟声已经到来,对于上班族来说,制定一份切实可行的工作计划与目标是非常有必要的。但是,很多人不知道2024年工作计划与目标怎么写?其实,关键在于明确目标、细化计划、合理安排时间,以确保每一步都稳…

BIO和NIO编程(待完善)

目录 IO模型 BIO NIO 常见问题 IO模型 Java共支持3种网络编程IO模式:BIO,NIO,AIO BIO 同步阻塞模型,一个客户端连接对应一个处理线程 代码示例: Server端: public class BioServer {private static …

window下载安装Mongodb数据库

我们先要访问他的官网 https://www.mongodb.com/zh-cn 然后顶部导航栏 选择 (Products/产品) 下的 (Community Edition/社区版) 进入界面后 找到 MongoDB Community Server Download 点击下面的按钮 Select package 然后会弹到这个位置 第一个版本 用系统默认选择的就好 第二…

Redis - 挖矿病毒 db0 库 backup 反复出现解决方案

问题描述 腾讯云的服务器,使用 Docker 部署了 Redis 之后,发现 DB0 中总是出现 4 条 key,分别是 backup01backup02backup03backup04 而自己每次存入 db0 中的数据过一会就会被无缘无故删除掉。 原因分析 挖矿病毒 解决方案 在启动的时候…

PSoc62™开发板之串口通信

实验目的 1.使用串口和PC机通信:接收和发送信息 2.接收GNSS模块定位信息 实验准备 PSoc62™开发板CH340 USB转TTL模块ATGM332D GNSS模块公母头杜邦线x4 板载资源 板载有多少uart 创建工程例程,在libraries/HAL_Drivers/uart_config.h中查看BSP支持…

凯越推出复古150踏板欧洲先上?DAE150/150亮相

今天临下班发现凯越在欧洲的官网上更新了一台复古踏板,外观别说还有点精致的意思,一共分为125和150两个配置,都是采用的水冷单缸发动机。 配置和参数等数据简单过一下,这种车型更多的是看外观了,仪表采用的LCD的显示屏…

MySQL之四大引擎、账号管理以及建库认识

目录 一、数据库存储引擎(发动机) 1.1、认识引擎 1.2、查看存储引擎 1.3、引擎常识 1.4、support字段说明 1.5、四大引擎 二、数据库管理 2.1、元数据库介绍: 2.2、分类: 2.3、增删改查以及使用操作 2.4、权限 三、数…

ArkTS语言应用开发入门指南与简单案例解析

文章目录 前言创建项目及其介绍简单案例学习本文总结问答回顾-学习前言 在前几节课中,我们已经了解了ArkTS语言的特点以及其基本语法。现在,我们将正式利用ArkTS来进行应用开发。本节课将通过一个快速入门案例,让大家熟悉开发工具的用法,并介绍UI的基础概念。 创建项目及…

Mnist手写体数字数据集介绍与在Pytorch中使用

1.介绍 MNIST(Modified National Institute of Standards and Technology)数据集是一个广泛用于机器学习和计算机视觉研究的常用数据集之一。它由手写数字图像组成,包括0到9的数字,每张图像都是28x28像素的灰度图像,图…