/// <summary> /// 半円と矩形が交差、又はそれぞれ内包していたらtrue /// </summary> /// <param name="circle"></param> /// <param name="rect"></param> /// <returns></returns> public static bool Overlaps(ShapeHalfCircle halfCircle, Rect rect) { switch (halfCircle.Direction) { case ShapeHalfCircle.DIRECTION.UPWARD: if (halfCircle.Position.y > rect.position.y + rect.height * 0.5f) { // 上向き半円の中心点が、Rectの上端より上なら当たってない return(false); } break; case ShapeHalfCircle.DIRECTION.DOWNWARD: if (halfCircle.Position.y < rect.position.y - rect.height * 0.5f) { // 下向き半円の中心点が、Rectの下端より下なら当たってない return(false); } break; default: break; } Vector2[] verts = CalcRectVertexs(rect.width, rect.height, rect.position.x, rect.position.y); return(Overlaps(halfCircle, verts)); }
/// <summary> /// 形状同士がぶつかっていればtrue /// </summary> /// <param name="halfCircle1"></param> /// <param name="rect"></param> /// <returns></returns> public static bool Overlaps(ShapeUnityRect rect, ShapeHalfCircle halfCircle1) { return(Overlaps(halfCircle1, rect.Rect)); }
/// <summary> /// 形状同士がぶつかっていればtrue /// </summary> /// <param name="halfCircle1"></param> /// <param name="halfCircle2"></param> /// <returns></returns> public static bool Overlaps(ShapeHalfCircle halfCircle1, ShapeHalfCircle halfCircle2) { return(halfCircle1.Overlaps(halfCircle2)); }
/// <summary> /// 形状同士がぶつかっていればtrue /// </summary> /// <param name="halfCircle"></param> /// <param name="circle"></param> /// <returns></returns> public static bool Overlaps(ShapeCircle circle, ShapeHalfCircle halfCircle) { return(halfCircle.Overlaps(circle)); }