Exemple #1
0
    private void ProcessFollowerChain(HashSet <GameObject> lemonings, Vector3 target)
    {
        HashSet <GameObject> leaders = new HashSet <GameObject>();

        // Nearest lemon will follow cursor
        if (lemonings.Count > 0)
        {
            GameObject         lemonObj = FindNearestLemoning(lemonings, target);
            LemoningController lemon    = lemonObj.GetComponent <LemoningController>();
            lemon.SetDestination(target);
            lemonings.Remove(lemonObj);
            leaders.Add(lemonObj);
        }
        while (lemonings.Count > 0)
        {
            // get next nearest lemon
            GameObject lemonObj = FindNearestLemoning(lemonings, target);
            // Find potential leader (one closest to this lemon)
            GameObject leaderObj = FindNearestLemoning(leaders, lemonObj.transform.position);
            // Set lemon to follow
            LemoningController lemon = lemonObj.GetComponent <LemoningController>();
            lemon.SetFollow(leaderObj);
            lemonings.Remove(lemonObj);
            leaders.Add(lemonObj);
        }
    }
 // Start is called before the first frame update
 void Start()
 {
     m_Controller = GetComponent <LemoningController>();
     RandomizeTimer();
     m_waitTimer = 0.0f;
 }