public static bool pointToCircle( Vector2 point, Circle circle, out CollisionResult result )
{
result = new CollisionResult();
// avoid the square root until we actually need it
var distanceSquared = Vector2.DistanceSquared( point, circle.position );
var sumOfRadii = 1 + circle.radius;
var collided = distanceSquared < sumOfRadii * sumOfRadii;
if( collided )
{
result.normal = Vector2.Normalize( point - circle.position );
var depth = sumOfRadii - Mathf.sqrt( distanceSquared );
result.minimumTranslationVector = -depth * result.normal;
result.point = circle.position + result.normal * circle.radius;
return true;
}
return false;
}