圆形与OBB
定义OBB:
/// <summary>
/// OBB区域
/// </summary>
public struct OBBArea
{
public Vector2 center;
public Vector2 extents;
public float angle;
}
OBB相对于AABB,矩形边不与坐标轴重合,对于它和圆形的相交检测只需要把圆形旋转到OBB边所在坐标系中,剩下的步骤与AABB的相同。
相交检测:
/// <summary>
/// 判断OBB与圆形相交
/// </summary>
/// <param name="oBBArea"></param>
/// <param name="target"></param>
/// <returns></returns>
public static bool OBB(OBBArea oBBArea, CircleArea target)
{
Vector2 p = oBBArea.center - target.o;
p = Quaternion.AngleAxis(-oBBArea.angle, Vector3.forward) * p;
Vector2 v = Vector2.Max(p, -p);
Vector2 u = Vector2.Max(v - oBBArea.extents, Vector2.zero);
return u.sqrMagnitude < target.r * target.r;
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易采站长站。










