今天在做项目时用到了新版本的网格导航,我在给游戏中的角色写了一个自动生成一个随机三维坐标,然后用agent.destination的方式来巡逻。但是在实际应用到场景中时,角色却无法正常移动,呆在原地。而我操控的主角却可以在网格导航烘焙的地图下自由移动。就在这样一个小问题卡了四五个小时后,在查阅了很多资料找到了解决办法:
新版本的网格导航可以为地图添加NavMeshSurface组件,而这个组件中允许提前计算行走在该区域上的Agent的类型。在我的项目中,主角和巡逻的敌人两者的Agent的Radius与Height是不同的,而我在项目的地图中只为其中的一种Agent添加NavMeshSurface组件来烘焙。这就导致,主角因为Agent类型在地图中烘焙而正常的活动,而需要巡逻的主角因为不适配主角的Agent烘焙而发呆。
解决方法就是在地图中添加两个NavMeshSurface组件为两个不同的Agent烘焙场景:
也请记得修改作用的Layer。