Esempio n. 1
0
    private void detectEnemies()
    {
        float            range   = turretStats.GetStatValue(StatType.ATTACKRANGE);
        List <Transform> targets = targetsDetector.GetTargets(range, enemyLayer);

        targets.RemoveAll((Transform enemy) => TurretUtilities.IsEnemyDying(enemy));
        if (targets.Count > 0)
        {
            Transform nearestTarget = getNearestTarget(targets);
            target    = nearestTarget;
            enemyCol  = target.GetComponent <Collider>();
            hasTarget = true;
        }
    }
    void detectEnemiesOnRangeAndSelectTheNearest()
    {
        float            range          = turretStats.GetStatValue(StatType.ATTACKRANGE);
        List <Transform> targetsOnRange = detectTargets(range);

        targetsOnRange.RemoveAll((Transform enemy) => TurretUtilities.IsEnemyDying(enemy));
        if (targetsOnRange.Count > 0)
        {
            areTargetsInRange = true;
            selectTheNearestEnemy(targetsOnRange);
        }
        else
        {
            areTargetsInRange = false;
        }
    }
    void randomizeTargets()
    {
        clearTargets();
        float range      = turretStats.GetStatValue(StatType.ATTACKRANGE);
        int   objectives = (int)turretStats.GetStatValue(StatType.OBJECTIVESTOHIT);

        List <Transform> targets = targetsDetector.GetTargets(range, targetLayer);

        areTargetsInRange = targets.Count > 0;
        targets.RemoveAll((Transform enemy) => TurretUtilities.IsEnemyDying(enemy));
        for (int i = 0; i < objectives; i++)
        {
            if (targets.Count <= 0)
            {
                return;
            }
            selectRandomTarget(targets);
        }
    }
Esempio n. 4
0
    private void searchAnotherTarget()
    {
        transform.position = lastEnemyPos;
        float            range   = turretStats.GetStatValue(StatType.PROJECTILERANGE);
        List <Transform> targets = targetsDetector.GetTargets(range, enemyLayer);

        targets.RemoveAll((Transform enemy) => TurretUtilities.IsEnemyDying(enemy));
        Transform target = getNearestTarget(targets);

        if (target != null)
        {
            this.target   = target;
            enemyCol      = target.GetComponent <Collider>();
            lastEnemyPos  = enemyCol.bounds.center;
            isTargetAlive = true;
        }
        else
        {
            disable();
        }
    }