Unity3D RPG Core | 04 智能导航地图烘焙

1. 设置地面和树木

首先在菜单 Window - AI - Navigation 中打开智能导航窗口。这时候选择地面物体,会发现无法设置地面的导航区域。这是因为此时地面没有被设置为静态导航。

在图 1 所示的地面查看界面,可以将地面平面设置为导航静态。因为之前 Polybrush,花草都会变成地面的子物体,所以设置时会提示是否将子物体一并设置。我们这边选择否,不需要将所有子物体都设置为导航静态。

图1 设置为导航静态

设置完之后,我们看到如图 2 所示,导航窗口中的地面 Object 选项卡中,Navigation Static 已经变为勾选(之前直接勾选此处也可以)。同时,Navigation Area 也变为可选择的了,确认此时地面为 Walkable。

图2 设置为导航静态

同样的操作,我们在 Hierarchy 窗口中将所有树木选中,然后如图 3 所示,将所有树木区域设置为不可行走。

图3 设置树木

最后我们在 Navigation 窗体的 Bake 选项卡中点击烘焙按钮,可以看到如图 4 所示的场景,地面上树木区域是不可行走的。

图4 烘焙地图

2. 设置人物

首先在 Hierarchy 窗口中选中人物,如图 5 所示,在查看窗体中添加 Nav Mesh Agent 组件。

图5 添加 Agent 组件

添加完组件之后,我们按图 5 所示,修改 Radius 和 Height 参数,使之更加贴合人物轮廓。

图6 修改 Agent 参数

设置完成之后,我们需要重新回到 Navigation 界面,修改其中的 Agent Radius 和 Agent Height 属性,使之和人物的属性统一上。最后需要重新烘焙地图,这时候因为人物范围相较于之前变小了,所以树木的不可行走区域也随之变小了。

图7 重新烘培地图

3. 非静态物体障碍区域

以上的非可行走区域都是针对的静态物体。如果动态物体需要实现不可行走区域,可以在物体上添加 Nav Mesh Obstacle 组件。如图 8 所示,需要勾选 Carve 选项。

图8 添加障碍组件

如图 9 所示,为大石头添加了 Nav Mesh Obstacle 组件,在场景中可以看到其不可行走区域。移动物体,其不可行走区域也会跟着移动。

图9 障碍组件