Esempio n. 1
0
    void FindIdealCover()
    {
        int coverIndex = -1;

        for (int i = 0; i < nearbyCovers.Count; i++)
        {
            float coverDistanceFromMyFaction      = AverageDistanceFromSquad(nearbyFriends, nearbyCovers [i]);
            float coverDistanceFromEnemiesFaction = AverageDistanceFromSquad(nearbyEnemies, nearbyCovers [i]);

            if (coverDistanceFromMyFaction < coverDistanceFromEnemiesFaction && coverDistanceFromEnemiesFaction > 4)
            {
                coverIndex = i;
                break;
            }
        }

        if (coverIndex != -1)
        {
            coverToPersue      = nearbyCovers [coverIndex];
            lastDestination    = currentDestination;
            currentDestination = coverToPersue.coverPosition.position;
            agent.SetDestination(currentDestination);
            persuingCover = true;
        }
    }
Esempio n. 2
0
    float AverageDistanceFromSquad(List <ShAI_U> squad, CoverObjects cover)
    {
        List <float> distances = new List <float> ();

        for (int i = 0; i < squad.Count; i++)
        {
            distances.Add(ApproxDistance(squad [i].transform.position, cover.transform.position));
        }
        float averageDistance = 0;

        for (int i = 0; i < distances.Count; i++)
        {
            averageDistance += distances [i];
        }
        averageDistance /= distances.Count;

        return(averageDistance);
    }