包围体是啥?
我们直观觉得碰撞往往是两个多边形相交,但是在计算机中这么算是很复杂的,特别是边很多的物体时
为了减少计算,就需要把几何体用一个简单的体空间包围起来(简单体是指:长方体、球体)
PS:包围体的英文名叫:BV
如图所示:(来自百度图片)
注意:包围体具有低消耗的相交测试的好处同时,也会占用额外的内存(需要存储包围的数据),不过影响不大
在游戏开发中,一般都会对其进行简化
Unity里面也提供了集中包围体的Collider,比如BoxCollider、ShpereCollider等,同时官方也并不推荐你使用MeshCollider
那么详细说一下各种包围体,如图所示:
1.球体
球体是一种很常见的包围体,只需要存储圆心点以及半径
数据定义如下:
public struct Sphere
{
public FPVector2 center; //圆心
public FP radius; //半径
}
其优点就是计算相交速度非常之快,也不会受到旋转变换的影响
相交测试代码:
//圆心距离是否小于两者半径之和
public static bool<