[unity] NavMesh 寻路 贴边走的问题 优化。
2017-08-07 12:33
1921 查看
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随机下可能就好了。
网上找了一个类似的问题: 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随机下可能就好了。
相关文章推荐
- unity自带寻路Navmesh入门教程(二)
- unity自带寻路Navmesh入门教程(一)
- unity自带寻路Navmesh
- unity自带寻路Navmesh入门教程(三)
- unity自带寻路Navmesh入门教程(二)
- unity自带寻路Navmesh入门教程
- unity自带寻路Navmesh入门教程(三)
- unity自带寻路Navmesh入门教程(一)
- Unity关于 "Move" can only be called on an active agent that has been placed on a NavMesh.问题的解决办法
- unity自带寻路Navmesh入门教程(一)
- unity自带寻路Navmesh入门教程(一)
- unity自带寻路Navmesh入门教程(一)
- unity自带寻路Navmesh入门教程(二)
- [置顶] Unity VR&AR Unity播放全景视频及优化极点变形twist问题
- unity自带寻路Navmesh入门教程(三)
- unity自带寻路Navmesh入门教程
- Unity自带寻路Navmesh入门教程(三)
- Unity 自动寻路Navmesh之跳跃,攀爬,斜坡
- Unity 再次谈优化问题。三合一。。感谢分享。。
- unity手游开发--Navmesh自带寻路组件使用注意事项