예제 #1
0
    public EnemyContent GetFromPool()
    {
        EnemyContent enemy = Main.EnemyMain.enemiesPool.Dequeue();

        enemy.gameObject.SetActive(true);
        return(enemy);
    }
예제 #2
0
 private void AddToPool(EnemyContent enemy)
 {
     enemy.gameObject.transform.position = UtilityCustom.GetRandomPosition();
     enemy.destination = UtilityCustom.GetDestination();
     Main.EnemyMain.enemiesPool.Enqueue(enemy);
     enemy.gameObject.SetActive(false);
 }
예제 #3
0
    private void GetEnemyFromPool(Vector3 randomPosition, Vector3 destination)
    {
        EnemyContent go = Main.EnemyMain.enemyPooling.GetFromPool();

        go.gameObject.transform.position = randomPosition;
        go.destination = destination;
        go.timer       = 0f;
    }
예제 #4
0
    private void SpawnNewEnemy(Vector3 randomPosition, Vector3 destination)
    {
        EnemyContent go = Instantiate(Main.EnemyMain.refs.enemyPrefabToSpawn, randomPosition, Quaternion.identity);

        go.destination = destination;
        go.timer       = 0f;
        go.gameObject.transform.parent = Main.EnemyMain.enemiesKeeper;
        Main.EnemyMain.enemies.Add(go);
    }
예제 #5
0
    public void SpawnABullet(EnemyContent enemy)
    {
        Vector3 positionForBullet = enemy.transform.position;

        if (!isGameOver)
        {
            if (Main.BulletMain.bulletsPool.Count == 0)
            {
                SpawnNewBullet(positionForBullet);
            }
            else
            {
                GetBulletFromPool(positionForBullet);
            }

            Main.BulletMain.BulletShoot();
        }
    }
예제 #6
0
 public void ReachedDestination(EnemyContent enemy)
 {
     onEnemyReachedDestination?.Invoke(enemy);
 }