Exemple #1
0
    private void TeleportClosestEnemyOrPlayer()
    {
        GameObject[] enemies                    = GameObject.FindGameObjectsWithTag("Enemy");
        GameObject   closestEnemy               = GameObject.FindGameObjectWithTag("Player");
        float        closestEnemyDistance       = (closestEnemy == null) ? 100 : Vector3.Distance(closestEnemy.transform.position, transform.position);
        bool         foundEnemyCloserThanPlayer = false;

        foreach (var enemy in enemies)
        {
            float dist = Vector3.Distance(enemy.transform.position, transform.position);
            if (dist < closestEnemyDistance)
            {
                closestEnemyDistance       = dist;
                closestEnemy               = enemy;
                foundEnemyCloserThanPlayer = true;
            }
        }

        if (!foundEnemyCloserThanPlayer)
        {
            _agentController.TeleportPlayer();
        }
        else
        {
            closestEnemy.GetComponent <Enemy>().SelfDestroy();
            _agentController.DecrementAgentTeleportTrapRemaining();
        }
    }