예제 #1
0
    private void PersonalityShuffle()
    {
        fleePersonality      = (FleePersonality)Random.Range(0, System.Enum.GetNames(typeof(FleePersonality)).Length);
        capPersonality       = (CapPersonality)Random.Range(0, System.Enum.GetNames(typeof(CapPersonality)).Length);
        attackingPersonality = (AttackingPersonality)Random.Range(0, System.Enum.GetNames(typeof(AttackingPersonality)).Length);

        personalityShuffleTimer = Time.time + Random.Range(personalityShuffleDelayMin, personalityShuffleDelayMax);
    }
예제 #2
0
    private void VariableShuffle()
    {
        pursuitRadius       = Random.Range(pursuitRadiusMin, pursuitRadiusMax);
        attackRadius        = Random.Range(attackRadiusMin, attackRadiusMax);
        fleeUntilTime       = Random.Range(fleeTimerMin, fleeTimerMax);
        fleeRadius          = Random.Range(fleeRadiusMin, fleeRadiusMax);
        idleAnimationRadius = Random.Range(idleRadiusMin, idleRadiusMax);

        if (Time.time > personalityShuffleTimer)
        {
            fleePersonality = (FleePersonality)Random.Range(0, System.Enum.GetNames(typeof(FleePersonality)).Length);
            capPersonality  = (CapPersonality)Random.Range(0, System.Enum.GetNames(typeof(CapPersonality)).Length);

            personalityShuffleTimer = Time.time + Random.Range(personalityShuffleDelayMin, personalityShuffleDelayMax);
        }

        nextShuffleTime = Time.time + Random.Range(shuffleDelayMin, shuffleDelayMax);
    }
예제 #3
0
    private Transform FindNearestCap(CapPersonality mode)
    {
        Transform nearest     = null;
        float     curDistance = Mathf.Infinity;

        foreach (GameObject cap in GameManager.caps)
        {
            // If attacker, ignore own team's zones
            if (mode == CapPersonality.Attacker && cap.GetComponent <CapZone>().GetOwner() == this.tag)
            {
                continue;
            }

            // If any cap, ignore current nearest zone
            if (mode == CapPersonality.AnyCap && cap.transform == nearestCap)
            {
                continue;
            }

            /*
             * // If defender, ignore other teams' zones
             * if (mode == CapPersonality.Defender && cap.GetComponent<CapZone>().GetOwner() != this.tag)
             *  continue;
             */

            // If capTaker, only search for unclaimed zones
            if (mode == CapPersonality.CapTaker && cap.GetComponent <CapZone>().GetOwner() != "uncapped")
            {
                continue;
            }

            float calculatedDist = (cap.transform.position - transform.position).sqrMagnitude;

            if (calculatedDist < curDistance)
            {
                nearest     = cap.transform;
                curDistance = calculatedDist;
                capDistance = calculatedDist;
            }
        }
        return(nearest);
    }