【Unity踩坑记录】导航系统NavMeshAgent的红叉和红圈

这玩意目前不清楚有啥用,不过或许以后debug会用到
目前关于这玩意网上完全搜不到,所以现在这里记录一下,希望以后能帮到谁咯

 

 

看到NavMeshAgent的红叉和红圈的步骤

  1. 运行
  2. 打开并选择Navigation面板
  3. 在Hierarchy中选择挂载了NavMeshAgent的物体
  4. 在Game窗口打开Gizmos,并打开下拉菜单,勾选NavMeshAgent

红叉和红圈的真身

红叉的position:SetDestination的参数(可以不在navMesh可移动范围内)
红圈的position:红叉navMesh上的有效destination(在可移动范围内)

所以其实NavMeshAgent.remainingDistance = transform.position - 红圈position
在这里插入图片描述
当红叉位于not walkable区域上方时,红圈就会被放在walkable区域的边缘,这时就会发现红叉不在红圈的正下方了

需要注意的坑

if(!navMeshAgent
Unity中使用`NavMeshAgent`组件可以使得游戏对象(通常是玩家控制的角色或AI控制的NPC)能够根据导航网格(NavMesh)进行智能寻路。以下是使用`NavMeshAgent`的基本步骤: 1. **创建导航网格**:首先需要为游戏世界生成导航网格。这可以通过选择场景中的地形或模型,然后在Inspector面板中点击`Bake`按钮来完成。这将生成NavMeshNavMesh的生成规则可以通过`Window > AI > Navigation`面板进行配置。 2. **添加NavMeshAgent组件**:将需要进行导航的游戏对象(例如角色)选择,然后点击`Add Component`按钮,在搜索框中输入`NavMeshAgent`并添加。 3. **设置NavMeshAgent参数**:在添加了`NavMeshAgent`组件之后,可以通过Inspector面板调整其参数,如速度(Speed)、加速度(Acceleration)和转向速度(Angular Speed)等。 4. **编写控制脚本**:为了控制角色的移动,需要编写一个脚本来控制`NavMeshAgent`。以下是一个简单的脚本示例: ```csharp using UnityEngine; using UnityEngine.AI; // 引入命名空间 public class CharacterMovement : MonoBehaviour { private NavMeshAgent agent; void Start() { // 获取NavMeshAgent组件 agent = GetComponent<NavMeshAgent>(); } void Update() { // 每帧更新Agent的目标位置 if (Input.GetMouseButtonDown(0)) { RaycastHit hit; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out hit, 100.0f)) { agent.SetDestination(hit.point); // 设置目的地为鼠标点击的位置 } } } } ``` 5. **附加脚本到游戏对象**:将编写好的脚本附加到你希望进行导航的游戏对象上。 6. **测试导航**:运行游戏并点击游戏视图中的地面,角色应会自动沿着导航网格移动到鼠标点击的位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值