[unity] NavMesh 寻路 贴边走的问题 优化。

xiaoxiao2021-02-28  272

NavMesh 寻路出来后,  角色走路很多时候贴着地图的边缘走,很别扭。

网上找了一个类似的问题: http://www.manew.com/thread-94163-1-1.html

里面方案 也挺适合我们的情况, 没用NavMesh Agent ,而是根据算出来的点 自己移动的。 基本解决方案:

float radius = 1; Vector3[] pathCorners; if (NavMesh.CalculatePath(character.transform.position, targetPosition, NavMesh.AllAreas, navPath) && navPath.corners.Length > 1) { pathCorners = navPath.corners; for (int i = 1; i < pathCorners.Length - 2; i++) { NavMeshHit hit; bool result = NavMesh.FindClosestEdge(pathCorners[i], out hit, NavMesh.AllAreas); if (result && hit.distance < radius) pathCorners[i] = hit.position + hit.normal * radius; } } 基本思路大概就是  CalculatePath之后,  把 每个寻路点 往最近的边缘( FindClosestEdge)上做个法线,法线方向上偏移一下( hit.normal * radius),

这样走路不至于贴边了。 不过每个人走的路径还是差不多,,,这个么 把radius随机下可能就好了。

转载请注明原文地址: https://www.6miu.com/read-83359.html

最新回复(0)