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 update
    void Start()
    {

    }

    // Update is called once per frame
    void 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属性,以避免对性能产生不必要的影响。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值