Unity 导航网格生成碰撞体

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/akof1314/article/details/78570124

原因

在使用 Unity 导航网格进行点击行路的时候,需要提供碰撞体以让鼠标进行射线检测,来得到目的地的坐标点。但是,当遇到比较复杂的地面时,简单的 Box 碰撞体是不够贴合地面的,使用 Mesh 碰撞体又会更耗费资源,所以需要一种简单快速的铺设 Box 碰撞体方案。

优点

通过导航网格来生成地面的碰撞体,减少手动铺设碰撞体的工作量。

实现过程

通过导航网格的获取三角形顶点接口,将顶点显示出来,点选顶点来进行构建 Box 碰撞体。如下导航网格,黑色的点即 Unity 导航系统自动显示的顶点:


提供一个红色矩形框,来进行限制显示顶点,否则绘制太多导致卡顿。矩形范围选择完毕,则可以"Show Verticies from Selected Region"来显示区域里的顶点,以蓝色来显示,如下所示:


鼠标点选要构建 Box 碰撞体的顶点(以绿色来表示选中),选择完毕点击"Create Box from Selected Verticies"来创建盒子,它会以最先选择的三个点构建一个平面,再在这个平面上计算出最小的包围盒,如下所示:


黄色的 Box 碰撞体表示当前选中,可以通过点击"Remove Box from Selected Collider"来进行移除。当编辑完毕,就可以点击"Finish"来进行移除组件。

源码地址

https://github.com/akof1314/UnityNavToCollider


猜你喜欢

转载自blog.csdn.net/akof1314/article/details/78570124
今日推荐