NavMeshAgent 寻路

烘焙地图

  1. 选中场景中要烘焙的游戏物体。将详情面板中的Static更改为Navigation Static。
  2. 选择Window → Navigation。
  3. 点击新打开的Navigation → Bake → 调整具体参数 → 点击最下方的Bake进行烘焙。
    以上功能便是将能够寻路的地图烘焙好了
  4. 创建一个胶囊体,在胶囊体上添加 Nav Mesh Agent组件
// 寻路组件
NavMeshAgent nav;
// 动画组件
Animator ani;

private void Start() {
    // 获得要寻路的游戏物体    
    var obj = GameObject.Find("Player");
    // 获得游戏物体上的寻路组件
    nav = obj.GetComponent<NavMeshAgent>();
    // 获得游戏物体上的动画组件
    ani = obj.GetComponent<Animator>();
}
     
void Update() {
    // 获得一条射线
    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    射线碰撞信息
    RaycastHit hit;
    // 若射线发生了膨胀
    if( Physics.Raycast(ray, out hit, 1000, 1 << 6)) {
        // 设置寻路组件的目的地
        nav.SetDestination(hit.point);
    }
    // 改变游戏物体上动画跳转参数(要先做好待机和移动的动画融合树)
    // 在这里给到的参数是当前速度,速度会从零一直增加到最大速度,动画也是有过度动画的。
    ani.SetFloat("Speed", nav.velocity.magnitude);
}

若是以上操作能够使角色进行寻路,但角色跑步和角色转向与角色移动衔接很不自然可以试着调整寻路组件上的部分参数

  • Base Offset 偏移量,空中飞行的游戏物体需要按照地面进行寻路,可以适当调节。
  • Speed 最大移动速度。
  • Angular Speed 最大转角速度,可以给大点,方便场景中的游戏物体能够快速的转向。
  • Acceleration 加速度,这个也可以稍微给大点,方便能够快速相应。
  • Stopping Distance 停止寻路距离。
  • Carve 是否截断,能否通过。

动态遮挡物不要选择Navigation Static,因为选中烘焙后改变其动态遮挡物位置后之前的位置也是不能够进行移动的。

posted @   坞中客  阅读(150)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤
点击右上角即可分享
微信分享提示