示例#1
0
    protected override void Scan()
    {
        float scanRange = ss.GetComponent <CircleCollider2D>().radius;

        if (ut.TryGetClosestUnitWithinRange(gameObject, scanRange, "Turret", ownAllegiance, out closestEnemyTurret) == true)
        {
            return;
        }
        if (ut.TryGetClosestAttackerWithinRange(gameObject, scanRange, ownAllegiance, out closestEnemyUnit) == true)
        {
            return;
        }

        float distToFactionLeader = (transform.position - factionLeader.transform.position).magnitude;

        if (distToFactionLeader <= scanRange && factionLeaderCS.GetFollowMeStatus())
        {
            playerToFollow = factionLeader;
            return;
        }
        FindClosestHomeCity();
        if (homeCity)
        {
            float      distToHome         = (homeCity.transform.position - transform.position).magnitude;
            CitySquare possibleTargetCity = cm.FindNearestCitySquare_IgnoreIFF(transform, ownAllegiance);
            float      distToInvade       = (possibleTargetCity.transform.position - transform.position).magnitude;
            if (distToHome > distToInvade)
            {
                targetCity = possibleTargetCity;
            }
            else
            {
                targetCity = null;
            }
        }
        playerToFollow     = null;
        closestEnemyTurret = null;
        closestEnemyTurret = null;
    }