我有一个地形,上面有树,被烤成了NavMesh。NavMesh自动在树周围创建一个屏障,但它似乎是基于模型,而不是对撞机。既然我只想让AI避开树干,而不是树枝,我怎么能为树创建一个自定义的NavMesh障碍呢?我试着在树上添加一个NavMesh障碍,但它什么也没做。这是一个截图,展示了我的意思:

基本上,这是一个太大的障碍,我希望它更小,并能够设置一个定制的NavMesh障碍。
发布于 2022-06-26 20:01:09
我确信可以选择从网格到对撞机更改navmesh构建源,但是我找不到它,我想它已经从检查器中删除了,但是您仍然可以像这样从脚本中生成navmesh:
Bounds bounds = new Bounds(Vector3.zero, new Vector3(200,20,200);
List<NavMeshBuildSource> sources = new List<NavMeshBuildSource>();
NavMeshBuilder.CollectSources( bounds, LayerMask.GetMask("Default"),NavMeshCollectGeometry.PhysicsColliders,0, new List<NavMeshBuildMarkup>(), sources );
NavMeshData data = NavMeshBuilder.BuildNavMeshData( NavMesh.GetSettingsByID( 0 ), sources, bounds, Vector3.zero, Quaternion.identity );
NavMesh.RemoveAllNavMeshData();
NavMesh.AddNavMeshData( data );发布于 2022-06-27 01:17:41
如果你想要更小的屏障,你可以改变你的代理商的大小和再烘烤。

如果你想修改障碍,你可以使用navmesh修饰符,你可以指定为可行走的区域,这样当烘焙时,navmesh就会忽略这个障碍。https://docs.unity3d.com/2020.1/Documentation/Manual/class-NavMeshModifier.html
https://stackoverflow.com/questions/72764362
复制相似问题