网站侧边栏导航代码,泰兴市住房和建设局网站,大学生网页设计主题,网站加手机建设png图标目录
1 寻路和导航对移动的不同
1.1 基础的移动功能
1.1.1 基础移动
1.1.2 智能导航寻路
1.1.3 智能导航寻路还可以
2 如何实现这个效果#xff1f;
2.1 通过地图网格的形式
2.1.1 警告信息 the static value has been deprecated的对应搜索
2.1.2 新的navigation ba…目录
1 寻路和导航对移动的不同
1.1 基础的移动功能
1.1.1 基础移动
1.1.2 智能导航寻路
1.1.3 智能导航寻路还可以
2 如何实现这个效果
2.1 通过地图网格的形式
2.1.1 警告信息 the static value has been deprecated的对应搜索
2.1.2 新的navigation bake功能
2.1.3 bake按钮的位置
2.2 总结 unity2022后版本如何实现Navmesh 的地图 bake烘焙
2.2.1 unity 2022之前
2.2.1 unity 2022之后
2.3 如果遇到 window / 下面没有AI菜单的情况解决办法
3 地图测试导航寻路准备
3.1 做一些障碍物 和 楼梯等
4 生成地图网格
4.1 地图上1个物体添加新的component : nav mesh surface
4.2 navigation Agent设置
4.3 可以设置 多种不同体型的 agent 数据
4.4 navigation Agent的详细设置
5 题外话总结关于一个gameObject在游戏里有多个形象
6 用脚本实现移动时导航效果
6.1 具体内容
6.1.1 获得点击位置
6.1.2实现导航移动
6.2 脚本内容
6.3 报错处理
6.4 测试效果 OK 1 寻路和导航对移动的不同
1.1 基础的移动功能
实测有很多差别
1.1.1 基础移动
基础的移动可以朝向点选的地方移动比如可以跳下去等等 1.1.2 智能导航寻路
但是导航可以让角色移动的同时避开障碍物也就是 智能移动/寻路而且 NaviMesh 上显示非蓝色的区域角色移动时根本不会往哪走 1.1.3 智能导航寻路还可以
判断路径哪些地方是否可通过可以绕着障碍物走可以实现路径的不同区域的过路成本 2 如何实现这个效果
2.1 通过地图网格的形式
unity 2023版本以前点击右上角的 navigation static 可以unity 2023版本以后这个功能已经被弃用 the static value has been deprecated 2.1.1 警告信息 the static value has been deprecated的对应搜索
the static value has been deprecated 这个警告信息是Unity中的一个已弃用的警告信息它意味着你正在使用已经弃用的功能。这个信息是由于 Unity 2023 已经不再使用Deprecated GameObjectUtility.FindOrCreateNavMeshSurface API来处理生成Navmesh。这个警告信息只是告诉你正在使用过时的 API但不影响你使用 Navigation 功能。 如果你想使用Navigation功能但是不想看到这个报错信息你可以通过在代码中使用新的API来解决这个问题具体步骤如下 1.首先打开“Window AI Navigation”面板并创建一个新的 NavMesh Surface 组件。 2.然后将该组件添加到场景中的一个GameObject对象上。 3.在代码中使用以下代码片段获取对 NavMeshSurface 组件的引用 NavMeshSurface navMeshSurface GetComponentNavMeshSurface();4.使用该组件的新 API即 navMeshSurface.BuildNavMesh();这样就可以解决该警告信息并正确地使用 Navigation 功能。 需要注意的是由于该API已经弃用了因此无法保证该解决方案在未来版本的 Unity 中是否会继续有效。因此如果你想保持你的代码是最新的建议使用最新的文档和API。 2.1.2 新的navigation bake功能 在Unity 2022版本中导航系统的Bake按钮位置发生了变化不再直接显示在菜单中而是通过添加组件的形式进行烘焙。 在Unity 2022版本中导航系统的Bake按钮位置发生了变化。原来的Bake按钮被替换为在组件上进行烘焙。具体操作如下 选择场景中的静态物体首先确定场景中的静态物体在整个游戏运行过程中不会发生Transform变化的物体并将其设置为静态物体勾选static前面的复选框。添加NavMeshAgent组件给需要导航移动的物体添加Navmesh Agent组件。组件上烘焙在组件上通过添加NavMesh组件来实现烘焙功能。具体步骤如下 打开Unity编辑器进入Window菜单选择AI - Navigation。在Navigation界面中选择Agent Type并设置相关参数。添加NavMesh组件到需要烘焙的物体上通过组件参数进行烘焙设置12。 通过以上步骤可以在Unity 2022版本中实现导航系统的烘焙功能而无需直接使用Bake按钮。这种变化旨在提高工作效率并简化导航系统的使用13。 新版本的导航系统中没有Bake按钮这是因为Unity在2022.1版本中对导航系统进行了改进。在新版本中导航系统的烘焙过程是自动进行的无需手动触发。当您对场景进行更改或添加导航代理时Unity会自动检测并更新导航数据。因此您无需手动进行烘焙操作导航系统会自动处理。这样可以提高工作效率并简化导航系统的使用。如果您在使用新版本的Unity时遇到了导航相关的问题请提供更多详细信息以便我们能够更好地帮助您解决问题。 2.1.3 bake按钮的位置 2.2 总结 unity2022后版本如何实现Navmesh 的地图 bake烘焙
2.2.1 unity 2022之前
选择要烘焙的gameObject 右上角 静态static然后 Navigation static然后在windows下打开AI打开Navigation , 里面有 Navigation agent 和 bake按钮 2.2.1 unity 2022之后
玩家角色身上添加 NavMeshAgent 的component游戏场景里只需要1个物体比如我这的wall选择一个NavMeshSurface.包含bake按钮也在这儿在windows下打开AI打开Navigation ,里面只有 Navigation agent 、按前面的bake按钮 2.3 如果遇到 window / 下面没有AI菜单的情况解决办法
如果遇到 window / 下面没有AI菜单的情况 是安装unity时没安装这个功能包。我就遇到了这个问题需要先打开 package manager 然后在unity的包下搜索 navigation然后安装下就有了 3 地图测试导航寻路准备
3.1 做一些障碍物 和 楼梯等
让地图有些区域不能直接通过比如加墙阻隔需要通过楼梯斜坡才能通过 4 生成地图网格 4.1 地图上1个物体添加新的component : nav mesh surface
错误每个需要参与寻路的 gameObject 都增加一个新component : nav mesh agent正确只需要在场景内的一个gameObject 新建增加一个新component : nav mesh surface即可。 实测不需要每个物体上都添加然后有bake按钮点击全部进行了bake 4.2 navigation Agent设置
其中 agents 就是指 寻路的主体依据这个做的寻路是否可以通过也就是说寻路导航是为主角player 大小身高量身定做的。而其他单位比如怪物NPC等不会受到这些寻路的影响。 4.3 可以设置 多种不同体型的 agent 数据
多种不同体型的 agent 数据相当于多个模板具体的不同的游戏内角色可以选择属于哪个模板agent 然后不同的导航物体可以选择属于哪一类 4.4 navigation Agent的详细设置 angent的形状是一个圆柱形的和 unity编辑器里的一样
而不是看起来的形状 5 题外话总结关于一个gameObject在游戏里有多个形象
同样1个gameObject
mesh render 决定的外观看起来什么样比如外观的形状collider决定的碰撞时此物体的样子比如也也时胶囊angent的形状 决定navigation 寻路导航的这个物体的样子比如圆柱形 6 用脚本实现移动时导航效果
6.1 具体内容
6.1.1 获得点击位置
点击目标点获得点击点仍然使用之前的摄像机射线 ray Ray ray1Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if(Physics.Raycast(ray1,out hit)) { //点击位置 Vector3 point1hit.point; 6.1.2实现导航移动
//获取导航代理人agent1GetComponentNavMeshAgent();agent1.SetDestination(point1); 6.2 脚本内容
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;public class TestNavMeshAgent : MonoBehaviour
{private NavMeshAgent agent1;// Start is called before the first frame updatevoid Start(){//获取导航代理人agent1GetComponentNavMeshAgent();}// Update is called once per framevoid Update(){//如果点击鼠标左键 if (Input.GetMouseButtonDown(0)){Ray ray1Camera.main.ScreenPointToRay(Input.mousePosition);RaycastHit hit;if(Physics.Raycast(ray1,out hit)){//点击位置Vector3 point1hit.point;//agent1.SetDestination(point1);}}}
}6.3 报错处理
测试时遇到这个我没更新点了X 6.4 测试效果 OK
可以实现智能寻路效果和按键移动的差别按键移动可以从墙上跳下到对面去但是点击移动摄像机射线这种方法角色在墙上也无法移动到对面