Unity Nav Mesh导航系统的简单使用

标题

    • 1.下载。
    • 2.面板位置
    • 3.object面板
    • 4.Area面板
    • 5.Bake面板
    • 6.Agent面板
    • 7.Nav Mesh Agent组件
    • 8.Nav Mesh Obstacle组件
    • 9.简单使用

1.下载。

unity2022以上版本要去packageManager中下载。

2.面板位置

在这里插入图片描述

3.object面板

在这里插入图片描述
Navigation Static:设置该物体是否被列入静态寻路系统中。(如果你要的是一个动态的障碍那么不要勾选)。
Generate OffMeshLinks:它是 Navigation 面板中的一个选项 。勾选后,会依据设置的高度、可跳跃宽度等全局选项,在满足条件的地方(如存在高度差或间隙等)自动生成 OffMeshLink(导航链接 ),用于指示寻路代理可跨越的区域。
Navigation Area:用于选择该物体的属性。(可行/不可行/自定义区域),每个区域有不同的权值,而导航依赖于这些权值来做判断。

4.Area面板

在这里插入图片描述
上述的区域权值编辑面板。

5.Bake面板

在这里插入图片描述
Radius:定义该物体的判定半径,该值越小可行区域越大。
radius = 0.1;
在这里插入图片描述
radius = 0.5;
在这里插入图片描述
Agent Height:定义可行高度的最小值,大于等于这个值的高度才有可能是可行区域。
Max slope:最大坡度。
step Heigth:最大台阶高度。
Generate Links:自动产生网格外连接的值设置。

最下方的3个是烘焙精密度以及优化相关的选项。
Manual Voxel Size(手动体素大小):勾选后可手动设置体素大小(Voxel Size )。导航网格烘焙用体素化从几何体构建导航网格,先将场景光栅化为体素,再提取可行走表面并转化为导航网格 。体素大小决定导航网格表示场景几何体的准确程度,默认每个代理半径对应 3 个体素 ,能兼顾精确度和烘焙速度。减小体素大小可提升导航网格精度,但会使内存使用量增加、烘焙时间变长。 比如构建更准确的导航网格或针对更小代理半径烘焙时,可能需手动设置。

Voxel Size(体素大小):表示生成的导航网格表示场景几何体的精确程度数值 。不勾选 “Manual Voxel Size” 时,该值由系统按默认规则(每个代理半径对应 3 个体素 )确定;勾选后可自定义,值越小,精度越高,烘焙耗时和内存占用也越大。

Min Region Area(最小区域面积) :用于设置导航网格区域的最小表面积。烘焙时,表面积小于此指定值的非连接导航网格区域将被剔除 。比如设置为 2,小于该面积的孤立小区域不会出现在最终导航网格中 。但有时即便设置了该值,跨瓦片边界区域因算法限制,可能不会被移除 。

6.Agent面板

在这里插入图片描述
Agent面板是当该物体被挂载了Agent组件的时候才真正有用。
Radius:这里的半径区别于Bake,能通过的最小半径。
Height:一样是能通过的最小间隙,与Bake的区别就是,Bake先决定好了NavMesh的可行区,然后Agent的Height再对每个player进行个性化的定义。
Step Height,Max Slope同上。

7.Nav Mesh Agent组件

在这里插入图片描述
Steering:定义了物体的行走的属性。
Obstacle Avoidance:
Radius:定义碰撞的半径。
Height:定义了碰撞的高度。
Quality:定义了碰撞避免的质量。越高表现越好,越吃性能。
Priority:避免时的权重,越小优先级越高。
Path Fining:
从上到下:
自动寻找有无外连接。
在死路的时候是否重新寻找有无可行路径。
选择自身可行的Area。

8.Nav Mesh Obstacle组件

在这里插入图片描述
Shape:碰撞盒的形状。
Center,size:位置大小信息。
Carve:是否启用该障碍。
Move Threshold:当位置移动的distance>= x的时候更新该物体的碰撞可行区。
Time To Stationary:当物体静止x秒后被视为静态。
Carve Only Stationary:(是/否)仅在静态时候更新碰撞可行区。

9.简单使用

动态障碍脚本,使用Dotween来制作动画。也可以使用Towards,Lerp等来改变transform.position的位置实现相同的效果,不过这里用Dotween的Sequence很方便。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
public class dynamicObstacle : MonoBehaviour
{// Start is called before the first frame updateprivate Sequence sequence;private void Start(){Vector3 startPosi = transform.position;Vector3 targetPosi = new Vector3(transform.position.x + 5, transform.position.y, transform.position.z);sequence = DOTween.Sequence();sequence.Append(transform.DOMove(targetPosi, 5f));sequence.Append(transform.DOMove(startPosi, 5f));sequence.SetLoops(-1);}}

主物体脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;public class playerScript : MonoBehaviour
{// Start is called before the first frame updateprivate NavMeshAgent agent;[SerializeField] Transform destination;void Start(){agent = GetComponent<NavMeshAgent>();}// Update is called once per framevoid Update(){agent.SetDestination(destination.position);}
}

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

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

相关文章

FairyGUI图标文字合批失败的原因

1&#xff09;FairyGUI图标文字合批失败的原因 2&#xff09;为什么Cubemap的内存占用超高 3&#xff09;如何找到网格某个切面的中心点 4&#xff09;为什么SafeZone在倒屏后方向相反 这是第428篇UWA技术知识分享的推送&#xff0c;精选了UWA社区的热门话题&#xff0c;涵盖了…

[BUG]Cursor C++扩展不支持

本文内容组织形式 问题描述失效原因解决方案使用野版C Extension 猜你喜欢结语 问题描述 日期&#xff1a;20250419 操作系统&#xff1a; mac C代码没有办法进行跳转&#xff0c;并且和以前的文本标亮也不同 并且还有如下问题弹窗 C/C 扩展只能与 Microsoft Visual Studio…

深⼊理解 JVM 执⾏引擎

深⼊理解 JVM 执⾏引擎 其中前端编译是在 JVM 虚拟机之外执⾏&#xff0c;所以与 JVM 虚拟机没有太⼤的关系。任何编程语⾔&#xff0c;只要能够编译出 满⾜ JVM 规范的 Class ⽂件&#xff0c;就可以提交到 JVM 虚拟机执⾏。⾄于编译的过程&#xff0c;如果你不是想要专⻔去研…

Ubuntu 部署 DeepSeek

在 Ubuntu 系统上部署 DeepSeek 模型&#xff0c;能让用户利用其强大的人工智能能力&#xff0c;同时保障数据的安全性与操作的自主性。不过&#xff0c;这一过程涉及诸多技术细节&#xff0c;需要谨慎操作。以下将为你详细介绍在 Ubuntu 系统部署 DeepSeek 的操作步骤及注意事…

通义灵码 Rules 库合集来了,覆盖Java、TypeScript、Python、Go、JavaScript 等

通义灵码新上的外挂 Project Rules 获得了开发者的一致好评&#xff1a;最小成本适配我的开发风格、相当把团队经验沉淀下来&#xff0c;是个很好功能…… 那么有哪些现成的 Rules 可以抄作业呢&#xff0c;今天我们官方输出了 Java、TypeScript、Python、Go、JavaScript 等语…

山东大学软件学院项目实训-基于大模型的模拟面试系统-Token过期重定向问题

项目结构 ├── assets/ # 静态资源&#xff08;CSS/图片&#xff09; ├── components/ # Vue 组件 ├── layouts/ # 布局模板 ├── pages/ # 自动生成路由 ├── plugins/ # 插件&#xff08;如 axios 拦截器&#xff09; …

SAP案例:珠海汉胜科技SAP S/4 HANA智能制造实践与价值实现

客户简介 珠海汉胜科技股份有限公司为高科技生产企业&#xff0c;成立于1985年&#xff0c;拥有员工近2000人。主要从事生产、销售、研发&#xff1a;光纤光缆、电线、电缆及附件、铝塑复合管&#xff1b;光纤光缆、电缆、电线生产项目的策划及技术咨询。它致力于为国内外无线电…

Spring Boot 项目中发布流式接口支持实时数据向客户端推送

1、pom依赖添加 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId></dependency>2、事例代码 package com.pojo.prj.controller;import com.pojo.common.core.utils.String…

Zookeeper 可观测性最佳实践

Zookeeper 介绍 ZooKeeper 是一个开源的分布式协调服务&#xff0c;用于管理和协调分布式系统中的节点。它提供了一种高效、可靠的方式来解决分布式系统中的常见问题&#xff0c;如数据同步、配置管理、命名服务和集群管理等。本文介绍通过 DataKit 采集 Zookeeper 指标&#…

【安全】DVWA靶场渗透

【安全】DVWA靶场渗透 备注一、环境搭建二、弱口令&#xff08;Brute Force&#xff09;三、命令注入&#xff08;Command Injection&#xff09;四、CSRF&#xff08;Cross Site Request Forgery&#xff09;五、文件包含&#xff08;File Inclusion&#xff09;六、文件上传&…

Ubuntu22.04安装QT、px4安装环境

Ubuntu22.04安装QGC编译环境、QT、px4编译环境 参考文档版本说明安装QGC安装Ubuntu安装QT配置px4安装环境出现错误怎么办 参考文档 PX4 1.15 User Guide 版本说明 PX4&#xff1a;1.15.4 QGC&#xff1a; 安装QGC 我使用的是pixhawk V5飞控&#xff0c;在QGC4.4 Guide里&a…

积木报表查询出现jdbc.SQLServerException: 对象名 ‘user_tab_comment 的解决方法

目录 前言1. 问题所示2. 解决方法前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 爬虫神器,无代码爬取,就来:bright.cn 1. 问题所示 使用帆软报表无错,后续使用积木报表查询出错: 没有显示报表: 具体错误信息如下:

c++基础·左值右值

一、左值与右值的本质特征 1. 基础定义 左值 (lvalue) ✅ 可出现在赋值运算符左侧 ✅ 可被取地址&#xff08;有明确存储位置&#xff09; ✅ 通常为具名变量&#xff08;如int a 10;中的a&#xff09; 右值 (rvalue) ❌ 不可出现在赋值左侧 ❌ 不可取地址&#xff08;无持久…

【Rust 精进之路之第9篇-所有权·核心】规则与移动 (Move):Rust 内存安全基石详解

系列: Rust 精进之路:构建可靠、高效软件的底层逻辑 作者: 码觉客 发布日期: 2025年4月20日 引言:没有 GC,Rust 如何管好内存?答案是所有权! 在我们的 Rust 探索之旅中,我们已经学习了变量、数据类型、控制流、函数和强大的构建工具 Cargo。现在,我们将踏入 Rust 最…

嵌入式学习——opencv图像库编程

环境配置 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉和图像处理库&#xff0c;广泛用于各种计算机视觉任务&#xff0c;如图像处理、视频分析、人脸识别、物体检测、机器学习等。它提供了丰富的函数和工具&#xff0c;用于处理…

一招破敌,掌控 React 渲染术:createRoot 与 root.render

前言 在这数字江湖中,前端门派百花齐放,React 一门尤为奇特,讲究“以虚制实,以组件驭天下”。眼下你我初入江湖,第一关便是挂载组件之术。倘若不懂 createRoot 与 root.render,那就像一个新晋小侠,连起手式都没学会,点穴还没碰到 DOM,自己先内伤三分。 来吧,少年!…

Linux常见工具如yum、vim、gcc、gdb的基本使用,以及编译过程和动静态链接的区别

目录 一、工具的本质 二、一些常用的工具 1.yum 2.vim 1&#xff09;vim的三种基本模式&#xff1a; 2&#xff09;vim的基本操作 ①命令模式下的基本操作&#xff1a; ②插入模式&#xff1a; ③底行模式&#xff1a; 3&#xff09;vim的配置&#xff1a;让他变得更好用 3.gcc…

JavaScript 一维数组转不含零的两个数

问题描述&#xff1a; /*** param {number} n* return {number[]}*/ var getNoZeroIntegers function(n) {for(let i 1;i<n;i){if(String(i).indexOf(0) -1&&String(n-i).indexOf(0) -1){return [i,n-i]}}};String类型indexOf()函数如果找不到字串则返回-1&…

力扣DAY60-61 | 热100 | 回溯:单词搜索、分割回文串

前言 中等 √ 继续回溯&#xff0c;不知咋地感觉这两题有点难度&#xff0c;是因为隔一天就手感生疏了吗&#xff1f; 单词搜索 我的题解 定义方向数组、二维访问数组。图搜索&#xff0c;向上下左右每个方向搜索&#xff0c;需要更新的信息&#xff1a;坐标、是否遍历过、…

超简单的git学习教程

本博客仅用于记录学习和使用 前提声明全部内容全部来自下面廖雪峰网站&#xff0c;如果侵权联系我删除 0.前言 相信有不少人被推荐那个游戏学习git&#xff0c;一个不止我一个完全没学习过的进去后一脸懵&#xff0c;半天都通不过一关然后就放弃了&#xff0c;我个人觉得那个…