예제 #1
0
    public void SetupNewEnemy(CreateEnemy enemy, GameObject spawnArea = null)
    {
        if (spawnArea == null)
        {
            int i = Random.Range(0, spawnAreas.Length);
            spawnArea = spawnAreas[i];
        }

        Vector3 spawnPosition = GetSpawnPosition(spawnArea);

        enemy.transform.position = spawnPosition;
        enemy.transform.parent   = this.transform;

        EnemyMovementController enemyMovementController = enemy.movementController;

        if (spawnArea.name == "Left")
        {
            enemyMovementController.movementDirection = Vector3.right;
        }
        else if (spawnArea.name == "Right")
        {
            enemyMovementController.movementDirection = Vector3.left;
        }
        else if (spawnArea.name == "Top")
        {
            enemyMovementController.movementDirection = Vector3.down;
        }
        else if (spawnArea.name == "Bottom")
        {
            enemyMovementController.movementDirection = Vector3.up;
        }
    }
예제 #2
0
    public void SpawnRandomEnemy()
    {
        float v = Random.value;

        CreateEnemy enemy;

        if (v >= 0.5f)
        {
            enemy = CreateEnemy.GetNewPrimitive();
        }
        else if (v >= 0.2f)
        {
            enemy = CreateEnemy.GetNewSplitter();
        }
        else
        {
            enemy = CreateEnemy.GetNewShooter();
        }


        this.SetupNewEnemy(enemy);

        this.currentEnemiesAmount++;
        this.totalEnemiesAmount++;
    }
        private void OnDestoryEnemy(object sender, GameObject gameObject)
        {
            Type t = gameObject.GetType();

            if (t != typeof(SmallAsteroid))
            {
                EnemiesCount--;

                if (gameObject is Asteroid)
                {
                    int smallAsteroids = _rnd.Next(2, 4);
                    for (int i = 0; i < smallAsteroids; i++)
                    {
                        CreateEnemy?.Invoke(gameObject.Pivot, EnemyType.SmallAsteroid);
                    }
                }

                EnemyType enemyType = ChoseEnemyType();

                if (EnemiesCount < _maxEnemiesInScene)
                {
                    AddEnemyToSpawnQueue(enemyType, _rnd.Next(0, _maxSpawnDelayTime));
                }
            }
        }
예제 #4
0
    //public Transform muzzle;

    void Start () {
       // Shoot();
        _lane = FindObjectOfType<Lane>();
        _lanePos = _lane.GetLaneList();

        createEnemy = FindObjectOfType<CreateEnemy>();
        player = FindObjectOfType<PlayerScript>();
    }
예제 #5
0
    public void UpdateStats(CreateEnemy type)
    {
        coinsMax  = type.dropCoinMax;
        coinsMin  = type.dropCoinMin;
        damage    = type.Damage;
        speed     = type.speed;
        maxHealth = type.Health;
        health    = maxHealth;

        GetComponent <SpriteRenderer>().sprite = type.sprite;
    }
예제 #6
0
    public void SpawnRandomEnemy()
    {
        // TODO : Randomize
        CreateEnemy enemy;

        enemy = CreateEnemy.GetNewPrimitive();

        this.SetupNewEnemy(enemy);

        this.currentEnemiesAmount++;
        this.totalEnemiesAmount++;
    }
 public void Update()
 {
     foreach (var spawingEnemy in _spawingEnemies)
     {
         if (spawingEnemy.TimeToSpawn <= 0)
         {
             CreateEnemy?.Invoke(this, spawingEnemy.EnemyType);
             _removingEnemies.Add(spawingEnemy);
         }
         else
         {
             spawingEnemy.TimeToSpawn--;
         }
     }
     CheckRemoving();
 }