Exemple #1
0
    public static Vector3 FindRandomWaypoint(ref ActivePoints activePoints)
    {
        Vector3 point = m_instance.m_maxVector;

        while (point == m_instance.m_maxVector || point == activePoints.m_currentWaypoint)
        {
            point = m_instance.m_allWaypoints[(int)Random.Range(0, m_instance.m_allWaypoints.Length)];
        }

        m_instance.UpdateActivePoints(point, ref activePoints);
        return(point);
    }
Exemple #2
0
    public static Vector3 FindNearestWaypoint(ref ActivePoints activePoints)
    {
        Vector3 nearest = m_instance.m_maxVector;

        for (int i = 0; i < m_instance.m_allWaypoints.Length; ++i)
        {
            if ((m_instance.m_allWaypoints[i] - activePoints.m_currentWaypoint).sqrMagnitude <= (nearest - activePoints.m_currentWaypoint).sqrMagnitude &&
                m_instance.m_allWaypoints[i] != activePoints.m_currentWaypoint &&
                m_instance.m_allWaypoints[i] != activePoints.m_previousWaypoint)
            {
                nearest = m_instance.m_allWaypoints[i];
            }
        }
        //Debug.Log("nearest: " + nearest);

        m_instance.UpdateActivePoints(nearest, ref activePoints);
        return(nearest);
    }
Exemple #3
0
 private void UpdateActivePoints(Vector3 newPos, ref ActivePoints points)
 {
     points.m_previousWaypoint = points.m_currentWaypoint;
     points.m_currentWaypoint  = newPos;
 }