diff options
Diffstat (limited to 'Assets/Scripts/Physics/PhysicsHelper.cs')
-rw-r--r-- | Assets/Scripts/Physics/PhysicsHelper.cs | 46 |
1 files changed, 45 insertions, 1 deletions
diff --git a/Assets/Scripts/Physics/PhysicsHelper.cs b/Assets/Scripts/Physics/PhysicsHelper.cs index 94916bfc..aa31108e 100644 --- a/Assets/Scripts/Physics/PhysicsHelper.cs +++ b/Assets/Scripts/Physics/PhysicsHelper.cs @@ -2,12 +2,23 @@ using System.Collections.Generic;
using UnityEngine;
+enum CollisionType
+{
+ BallvsBall = 1,
+ BallvsBox,
+ BoxvsBox
+}
+
+
/// <summary>
/// 碰撞的信息
/// </summary>
public class PhysicsCollisionInfo
{
-
+ CollisionType type;
+ PhysicsPrimitive prim1;
+ PhysicsPrimitive prim2;
+ Vector3 contacts;
}
public sealed class PhysicsHelper
@@ -34,6 +45,39 @@ public sealed class PhysicsHelper 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)
|