找回密码
 注册帐号

扫一扫,访问微社区

导航网格 (navmesh) 和寻路 (pathfinding)(仅限专业版 (pro))

2015-1-8 17:59| 发布者: 杨炎| 查看: 3116| 评论: 0|原作者: 蛮牛|来自: unity3d脚本manual

摘要: 导航网格 (navmesh) 和寻路 (pathfinding)(仅限专业版 (pro))导航网格(也称为navmesh)是世界几何体的简化表示,被游戏代理用来进行全球导航。通常,代理有一个目标或一个目的地,它试图找到通往该目标或目的地的 ...

导航网格 (navmesh) 和寻路 (pathfinding)(仅限专业版 (pro))

导航网格(也称为navmesh)是世界几何体的简化表示,被游戏代理用来进行全球导航。通常,代理有一个目标或一个目的地,它试图找到通往该目标或目的地的路径,然后沿着该路径导航到该目标。这个过程称为寻路。请注意,导航网格 (navmesh) 生成(或烘培)通常由游戏开发者在编辑器内完成,而寻路通常由代理在运行时根据该导航网格完成。

在复杂的游戏世界中,可以有许多代理、动态障碍物和在世界不同地区不断变化的可达程度。代理需要对这些变化作出动态反应。代理的寻路任务可能被一些事物打断或受到其影响,如避免与其他角色发生碰撞、日益改变的地形特征、物理障碍物(比如关门)和实际目的地的更新。

以下示例简单介绍了如何设置导航网格以及代理如何在导航网格上寻路:

在关卡中创建一些几何体,例如平面 (plane)地形 (terrain)

在检视器窗口 (inspector window) 的右上角点击静态 (static),确保该几何体标记为导航静态 (navigation static)

打开“导航网格 (navigation mesh)” 窗口(窗口 (window)->导航 (navigation))。

烘焙网格。这样将产生所有导航静态几何体的导航网格。

在场景中创建一些动态几何体(比如角色)。

通过向场景中的动态几何体添加navmeshagent组件,来创建一个代理(或多个代理)。

在附加到代理的脚本中为代理提供一个目的地(通过设置目的地属性)。

按播放并观看神奇的魔力。

请注意,还可以定义定制navmesh 层。如需让代理更轻松地通过环境中的某些地方(相对于其他地方),则需要这些层。对于没有直接连接的网格部分,可以创建分离网格链接。

自动分离网格链接

导航网格几何体也可以予以标记以自动生成分离网格链接,如下所示:

标记几何体,以自动生成分离网格链接

以这种方式标记的几何体将在导航网格烘焙过程中予以检查,以创建其他导航网格 (navmesh) 几何体的链接。这样,我们就可以控制每个游戏对象 (gameobject) 的自动生成过程。在烘焙过程中是否自动生成分离网格链接也取决于导航烘焙 (navigation bake)设置中的跳跃距离 (jump distance)下落高度 (drop height)属性。

指定给自动生成分离网格链接的 navmeshlayer 是内置层跳跃 (jump)。这样就允许全局控制自动生成分离网格链接成本(请参阅navmesh 层)。

请注意,也可以手动创建分离网格链接(详见此处)。

相关阅读

文章点评
相关文章
蛮牛教育10.1大促销!全站6折扣!