Exemple #1
0
 public CollisionResult(float penetration, Vector2 collisionNormal, Vector2 localCollisionPoint1, Vector2 localCollisionPoint2, Circle circle1, Circle circle2)
 {
     Penetration = penetration;
     CollisionNormal = collisionNormal;
     LocalCollisionPoint1 = localCollisionPoint1;
     LocalCollisionPoint2 = localCollisionPoint2;
     Circle1 = circle1;
     Circle2 = circle2;
 }
Exemple #2
0
        public static CollisionResult IsColliding(Circle c1, Circle c2)
        {
            var distance = Vector2.Distance(c1.Position, c2.Position);
            var sumOfRadius = c1.Radius + c2.Radius;

            if (sumOfRadius < distance)
            {
                var penetration = distance - sumOfRadius;
                var collisionDirection = Vector2.Normalize(c1.Position - c2.Position);
                var collisionNormal = Vector2.Cross(-1, collisionDirection);
                var c1LocalCollisionPoint = Vector2.Rotate(c1.Rotation, c1.Position + collisionDirection*penetration);
                var c2LocalCollisionPoint = Vector2.Rotate(c2.Rotation, c1.Position - collisionDirection*penetration);

                return new CollisionResult(penetration, collisionNormal, c1LocalCollisionPoint, c2LocalCollisionPoint, c1, c2);
            }

            return null;
        }
Exemple #3
0
 public abstract Vector2D GetCollisionNormal(Circle otherShape, Vector2D thisPosition, Vector2D otherPosition);
Exemple #4
0
 public abstract float GetCollisionPenDepth(Circle otherShape, Vector2D thisPosition, Vector2D otherPosition);
Exemple #5
0
 public abstract bool IsCollided(Circle otherShape, Vector2D thisPosition, Vector2D otherPosition);