/* * 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)); } } }