GetNormalClosestTo() public method

public GetNormalClosestTo ( CCPoint point, float &distance ) : CCPoint
point CCPoint
distance float
return CCPoint
示例#1
0
        public static CCPoint GetSeparationVector(Circle circle, Polygon polygon)
        {
            bool isCircleCenterInPolygon = polygon.IsPointInside(
                                                   circle.PositionWorldspace.X, circle.PositionWorldspace.Y);

            float distance;
            var normal = polygon.GetNormalClosestTo(circle.PositionWorldspace, out distance);

            if (isCircleCenterInPolygon)
            {
                distance += circle.Radius;
            }
            else
            {
                distance = circle.Radius - distance;
            }

            // increase the distance by a small amount to make sure that the objects do separate:
            distance += .5f;

            var separation = normal * distance;

            return separation;
        }