using System.Collections; using System.Collections.Generic; using UnityEngine; enum CollisionType { BallvsBall = 1, BallvsBox, BoxvsBox } /// /// 碰撞的信息 /// public class PhysicsCollisionInfo { CollisionType type; PhysicsPrimitive prim1; PhysicsPrimitive prim2; Vector3 contacts; } public sealed class PhysicsHelper { #region 简略版的2D检测,忽略z轴,对于格斗游戏来说使用2D物理 public static bool BallvsBall2D(PhysicsBall ball1, PhysicsBall ball2, out PhysicsCollisionInfo info) { info = null; return true; } public static bool BoxvsBox2D(PhysicsBox box1, PhysicsBox box2, out PhysicsCollisionInfo info) { info = null; return true; } public static bool BallvsBox2D(PhysicsBall ball, PhysicsBox box, out PhysicsCollisionInfo info) { info = null; return true; } public static bool BallvsRay(PhysicsBall ball, Vector3 ray) { return false; } public static bool BoxvsRay(PhysicsBox box, Vector3 ray) { return false; } public static bool RayvsRay(Vector3 ray1, Vector3 ray2) { return false; } public static bool PrimvsPrim(PhysicsPrimitive prim1, PhysicsPrimitive prim2, out PhysicsCollisionInfo info) { if(prim1.Type == PrimitiveType.Ball) { if (prim2.Type == PrimitiveType.Ball) return BallvsBall2D(prim1 as PhysicsBall, prim2 as PhysicsBall, out info); else return BallvsBox2D(prim1 as PhysicsBall, prim2 as PhysicsBox, out info); } else { if (prim2.Type == PrimitiveType.Ball) return BallvsBox2D(prim2 as PhysicsBall, prim1 as PhysicsBox, out info); else return BoxvsBox2D(prim1 as PhysicsBox, prim2 as PhysicsBox, out info); } } #endregion public static bool BallvsBall(PhysicsBall ball1, PhysicsBall ball2, out PhysicsCollisionInfo info) { info = null; return true; } public static bool BoxvsBox(PhysicsBox box1, PhysicsBox box2, out PhysicsCollisionInfo info) { info = null; return true; } public static bool BallvsBox(PhysicsBall ball, PhysicsBox box, out PhysicsCollisionInfo info) { info = null; return true; } }