首页 > 其他分享 >NavMeshAgent 寻路

NavMeshAgent 寻路

时间:2022-10-28 21:36:06浏览次数:47  
标签:游戏 寻路 烘焙 组件 NavMeshAgent Navigation

烘焙地图

  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,因为选中烘焙后改变其动态遮挡物位置后之前的位置也是不能够进行移动的。

标签:游戏,寻路,烘焙,组件,NavMeshAgent,Navigation
From: https://www.cnblogs.com/wuzhongke/p/16837516.html

相关文章

  • 水灾 (BFS-先洪水后寻路)
    水灾(sliker)大雨应经下了几天雨,却还是没有停的样子。ksy刚从外地回来,知道不久除了自己家,其他的地方都将会被洪水淹没。ksy的老家可以用一个N*M的地图表示,地图上有五种符号:“.......
  • A* 自动寻路算法-JavaScript
    效果图代码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"......
  • 基于全志D1-H哪吒的 自动寻路小车-附源码
    本文内容为【玄铁杯第二届RISC-V应用创新大赛】作业作者:智航追迹队原文链接:https://occ.t-head.cn/community/post/detail?spm=a2cl5.14300636.0.0.429d180fr0b8Om&id=409......
  • 寻路
      目录一、Recast生成(一)概述1.简介(二)生成过程1.体素化2.区域3.轮廓4.生成凸多边形5.详细三角形(三)配置1.可配置参数2.数据结构(四......
  • maxscript 自动寻路
    try(destroyDialogautoFinderRoll)catch()rolloutautoFinderRoll"遍历寻路"( buttonbtnCreateScene"创建场景"width:120 buttonbtnSetGround"设置地面[灰......