Esempio n. 1
0
    /*
     * Enemy attack
     * Show enemy attack animation and fire bullets.
     * 2 Options which we choose a randomly attack. Diagonal or straight.
     */
    private IEnumerator EnemyAttack()
    {
        while (true)
        {
            // Wait for attack
            yield return(new WaitForSeconds(Random.Range(.5f, 2f)));

            // Attack animation
            yield return(StartCoroutine(animator.EnemyAttack()));

            // Play Attack sound
            AudioManager.instance.sfx.PlayOneShot(enemyAttackSound);

            // Attack 2 types
            if (Random.Range(0, 100) % 2 == 0)
            {
                PoolManager.instance.InstantiateObject("Bullet", (Vector2)transform.position + new Vector2(0, 1), Quaternion.identity);
                PoolManager.instance.InstantiateObject("Bullet", (Vector2)transform.position + new Vector2(1, 0), Quaternion.Euler(0, 0, -90));
                PoolManager.instance.InstantiateObject("Bullet", (Vector2)transform.position + new Vector2(0, -1), Quaternion.Euler(0, 0, 180));
                PoolManager.instance.InstantiateObject("Bullet", (Vector2)transform.position + new Vector2(-1, 0), Quaternion.Euler(0, 0, 90));
            }
            else
            {
                PoolManager.instance.InstantiateObject("Bullet", (Vector2)transform.position + new Vector2(-1, 1), Quaternion.Euler(0, 0, 45));
                PoolManager.instance.InstantiateObject("Bullet", (Vector2)transform.position + new Vector2(-1, -1), Quaternion.Euler(0, 0, 135));
                PoolManager.instance.InstantiateObject("Bullet", (Vector2)transform.position + new Vector2(1, 1), Quaternion.Euler(0, 0, -45));
                PoolManager.instance.InstantiateObject("Bullet", (Vector2)transform.position + new Vector2(1, -1), Quaternion.Euler(0, 0, -135));
            }
        }
    }