Unity实现图形相交检测

2020-04-28 20:01:44王振洲

圆形与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;
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易采站长站。