コード例 #1
0
    public float GetDistanceByMapPoint(Vector2 point, out bool isOutOfPath, out Vector2 segmentNomal)
    {
        float   pathDistance = 0, segmentLengthTotal = 0;
        float   minDistSqr = float.MaxValue;
        Vector2 mapPoint;

        segmentNomal = Vector2.zero;
        for (int i = 1; i < m_path.Count; i++)
        {
            float projectionLength = 0;
            float distSqr          = SteerManager.GetPointToSegmentDistanceSqr(point, m_path[i - 1], m_path[i], m_normals[i], m_lengths[i], out mapPoint, out projectionLength);
            if (distSqr < minDistSqr)
            {
                minDistSqr   = distSqr;
                segmentNomal = m_normals[i];
                pathDistance = segmentLengthTotal + projectionLength;
            }
            segmentLengthTotal += m_lengths[i];
        }
        isOutOfPath = minDistSqr > m_radiusSqr;
        return(pathDistance);
    }