前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Unity自动寻路入门指南

Unity自动寻路入门指南

作者头像
xferris
发布2018-06-01 15:35:21
1.4K0
发布2018-06-01 15:35:21
举报
文章被收录于专栏:慎独慎独

Unity自动寻路指南

主要参考Naviation这个文档。本文不关注自动寻路的原理,如有需要可以在这里查看nav-InnerWorkings

一些名词

  • Agent:绑定在人物身上的,用于实现自动寻路的,看上去就像一个collision。
  • NavMesh:Agent可以在NavMesh在行走。
  • Off-Mesh Link:相当于传送门。
  • NavMesh Obstacle:障碍物。

创建NavMesh

标记为Navigation Static

所有用于成为NavMesh的网格都必须被指定为Navigation Static。 方法如下,选中GameObject,然后在菜单栏的[Window]-[Navigation]-[Object]-勾选即可。

烘培Bake

点击Bake开始烘培,其中的属性说明如下,可以参照这个图

  • Agent Radius:Agent的中心可以离障碍物有多近。
  • Agent Height:Agent可以通过的最矮高度。
  • Max Slope:Agent可以爬上的最高坡度。
  • Step Height:Agent每次可以上的最高高度(相当于一节楼梯的高度)。

一般来说,到这里设置完就可以点击Bake了,如果需要高级设置(设置体元和一些孤立的表面),参考这里nav-AdvancedSettings。 bake成功以后,选择的mesh表面就会像上面一样变成蓝色。 到这里NavMesh就设置完毕了。

NavMesh Agent设置和脚本编写

很简单,Agent Size设置可以在Scene面板中实时看到。

  • Speed:Agent所能达到的最大速度。
  • Angular Speed:最大的转向速度,不是人物的转向,是Agent需要拐弯的时候的最大的转向速度,如果这个过低,将会产生螺旋线路效果。
  • Acceleration:Agent到达Speed过程中的加速度,越大越快抵达Speed。
  • Stopping Distance:距离目的地多少远的距离停下。
  • Auto Braking:在终点是否自动停下,如果不勾选这个,Agent将会在终点绕终点做谐振。
  • Priority:多个Agents同时存在时,权重高的将会被忽略,权重取值范围从0到99,0是最重要,默认为50。
  • Auto Traverse OffMeshLink:到达Off-Mesh Link的位置是否自动触发传送。 设置完以上步骤后,只需以下代码,Agent就会移动到指定位置。
代码语言:javascript
复制
    // MoveTo.cs
    using UnityEngine;
    using System.Collections;
    
    public class MoveTo : MonoBehaviour {
       
       public Transform goal;
       
       void Start () {
          NavMeshAgent agent = GetComponent<NavMeshAgent>();
          agent.destination = goal.position; 
       }
    }

结合人物动画

官方的nav-CreateNavMeshAgent这个DEMO很简单,主要就是通过agent完成寻路,同时控制AnimationController。 关于更完美的例子可以查看StandardAsset Example中的CharacterThirdPersonAI,结合了第三人称人物动画控制器ThirdPersonAnimationController和第三人称人物控制器ThirdCharacterController完成了带walk和run的自动寻路。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Unity自动寻路指南
    • 一些名词
      • 创建NavMesh
        • 标记为Navigation Static
        • 烘培Bake
        • NavMesh Agent设置和脚本编写
        • 结合人物动画
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档