Unity——导航系统补充说明

一、导航系统补充说明

1、导航与动画

我们可以通过设置动画状态机的变量,让动画匹配由玩家直接控制的角色的移动。那么自动导航的角色如何与动画系统结合呢?

有两个常用的属性可以获得导航代理当前的状态:

一是agent.velocity,类型为Vector3,指的是导航代理当前速度向量,可以用速度的方向和大小来匹配移动动画。

二是agent.isOnOffMeshLink,类型为bool,可以根据角色是否处于导航链接路径上,判断是否需要播放跳跃动画。

2、导航区域

Navigation窗口的第二个标签是Areas(区域设置),用于匹配更多导航区域,最多有32个。

当地行一致时区域设置用处不大,但如果一个游戏中由各种复杂地形,如草原、沼泽和密林等区域,则需要导航代理按照最合理的方式选择路线。例如,宁可绕一些远路也不要横穿沼泽,此时地形的Cost参数就派上用场了。如可以给草原区域较低的Cost,给沼泽和密林区较高的Cost。

A*等寻路算法再计算路径时会充分考虑每个区域的Cost,从而选择总Cost相对较小的导航线路。

3、组件式导航系统

在Navigation敞口的Bake标签页的上方,有一句提示“Learn instead about the component workflow”,单击该链接会进入相关的介绍页面,该页面是新版的组件式导航系统NavMeshComponents的工程。

该工程是一个完整的Unity工程,可以下载后用Unity打开测试。如果要在工程中使用该系统,只需要将Assets/NavMeshComponents文件夹复制到Assets文件夹下即可。

这套新系统的功能比原版导航系统更多,但原版导航系统足以满足需求,而且Unity长期没有将组件式导航系统作为默认的的导航系统。

猜你喜欢

转载自blog.csdn.net/m0_63024355/article/details/132747988