Unity3D导航系统实例
Unity3D导航实例
使用脚本使胶囊体自动导航移动到目标位置,本次为demo实现过程
搭建场景
搭建场景
设置对象
设置场景中的对象
- 设置可以行走的对象
在Hierarchy视图中,选中对象,然后打开Navigation总控制面板,打开Object选项卡,将Navigation Area设置为可以行走的对象(Walkable),如图:
- 设置网格分层
在Navigation总控制面板中的Areas选项卡下,将User3的Name属性修改为Bridge1,将User4的Name属性修改为Bridge2,如图:
- 在Hierarchy视图中,分别选中Slope01和Slope02,然后在Navigation总控制面板中的Object选项卡下,将Navigation Area属性分别修改为Bridge1和Bridge2,如图:
- 设置地面可以跳跃
在Hierarchy视图中选中需要跳跃经过的两个对象,然后再Navigation控制面板中的Object选项卡下勾选Generate OffMeshLink复选框,如图:
- 设置障碍物
在Hierarchy视图中选中Wall01和Wall02,在Navigation控制面板中的Object下勾选Navigation Static复选框,然后将Navigation Area设置为Not Walkable,在对象的Inspector视图中添加Nav Mesh Obstacle障碍物组件,如图:
- 烘焙导航网格
在Navigation总控制面板的Bake选项卡下,单机Bake烘焙导航网格,烘焙完成的网格如图:
- 注意,如果没有烘焙出跳跃的路径,检查一下Bake选项卡下的跳跃距离是否设为0了
设置胶囊体
- 设置胶囊体
在Hierarchy视图中添加3D对象Sphere,命名为Player
为它添加Nav Mesh Agent组件
为它添加脚本组件,命名为RunTest
编辑RunTest脚本:
using UnityEngine;
using UnityEngine.AI;
public class RunTest : MonoBehaviour
{
public Transform TargetObject;
void Start()
{
GetComponent<NavMeshAgent>().SetDestination(TargetObject.position);
}
}
- 设置目标点Target
在Hierarchy视图中添加空对象,命名为Target
将它的位置设置在要将胶囊体移动到的目标位置
将它拖入到Player对象Runtest组件的TargetPosition选项,如图:
运行游戏
需要注意
- 在Player的Nav Mesh Agent组件中的Area Mask属性,把需要的寻路层勾选后才会自动寻路
Unity3D导航系统介绍
https://www.cnblogs.com/su-make/p/Unity-Navigation-introduce.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤