예제 #1
0
    public bool Spawn(SpawnLevel.EnemyTypes enemyType)
    {
        if (transform.position.x < minSpawnPosition.x || transform.position.x > maxSpawnPosition.x ||
            transform.position.z < minSpawnPosition.z || transform.position.z > maxSpawnPosition.z)
        {
            Debug.Log(gameObject.name + " skipped because it's outside of the tolerance!");
            return(false);
        }
        else
        {
            GameObject enemy = null;

            switch (enemyType)
            {
            case SpawnLevel.EnemyTypes.NORMAL_SHOOTING_ENEMY:
                enemy = objectPool.GetPooledObjectByIndex(0);
                break;

            case SpawnLevel.EnemyTypes.EXPLODING_ENEMY:
                enemy = objectPool.GetPooledObjectByIndex(1);
                break;

            case SpawnLevel.EnemyTypes.ROTATING_SHOOTING_ENEMY:
                enemy = objectPool.GetPooledObjectByIndex(2);
                break;
            }

            enemy.transform.position = transform.position;
            enemy.SetActive(true);
            return(true);
        }
    }
예제 #2
0
    private void Spawn(SpawnLevel.EnemyTypes enemyType)
    {
        bool spawned = false;

        while (!spawned)
        {
            int randomSpawner = Random.Range(0, spawners.Length);
            spawned = spawners [randomSpawner].Spawn(enemyType);
        }

        currentConcurrentEnemies++;
        if (currentConcurrentEnemies >= concurrentAllowedEnemies)
        {
            canSpawn = false;
        }
    }