SizilStank

Untitled

Feb 9th, 2023
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.09 KB | Gaming | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public class EnemyBehavior : MonoBehaviour
  6. {
  7.     [SerializeField] private float _enemySpeed = 5.5f;
  8.     [SerializeField] private float _enemyExplosionTime = 0.4f;
  9.     [SerializeField] private float _rayCastLength = 8;
  10.  
  11.     [SerializeField] private Player _player;
  12.  
  13.     [SerializeField] private GameObject _enemyExplosion;
  14.     [SerializeField] private GameObject _enemyLaser;
  15.    
  16.     [SerializeField] private AudioManager _audioManager;
  17.  
  18.     private bool _canFire;
  19.  
  20.  
  21.     private void Start()
  22.     {      
  23.         _canFire = true;
  24.         _audioManager = GameObject.Find("AudioManager").GetComponent<AudioManager>();
  25.  
  26.         if (_player && GameObject.Find("Player"))
  27.         {
  28.             _player = GameObject.Find("Player").GetComponent<Player>();
  29.         }
  30.  
  31.         StartCoroutine(EnemyFireLaser());
  32.     }
  33.  
  34.  
  35.     void Update()
  36.     {
  37.         transform.Translate(Vector3.down * _enemySpeed * Time.deltaTime);
  38.  
  39.         if (transform.position.y <= -9.01)
  40.         {
  41.             Vector3 randomRespawn = new Vector3(Random.Range(-9f, 9f), 10, 0);
  42.             transform.position = randomRespawn;
  43.         }
  44.  
  45.         ShootPowerUps();
  46.     }
  47.  
  48.     private void ShootPowerUps()
  49.     {
  50.         RaycastHit2D shootPowerUps = Physics2D.Raycast(transform.position, Vector2.down, _rayCastLength, LayerMask.GetMask("PowerUps"));
  51.         Debug.DrawRay(transform.position, Vector2.down * _rayCastLength, Color.red);
  52.  
  53.         if (shootPowerUps.collider != null)
  54.         {
  55.             if (shootPowerUps.collider.CompareTag("Player") && _canFire == true)
  56.             {
  57.                 _canFire = false;
  58.                 Debug.Log("Ray Hit Player");
  59.                 StartCoroutine(EnemyFireLaserAtPowerUps());
  60.             }
  61.         }
  62.     }
  63.  
  64.     IEnumerator EnemyFireLaserAtPowerUps()
  65.     {
  66.         yield return new WaitForSeconds(0.5f);
  67.         _canFire = true;
  68.         Vector3 laserPos = new Vector3(transform.position.x, transform.position.y + -0.5f, 0);
  69.         GameObject gameObject = Instantiate(_enemyLaser, laserPos, Quaternion.identity);
  70.         _audioManager.EnemyShoot();
  71.     }
  72.  
  73.     IEnumerator EnemyFireLaser()
  74.     {
  75.         yield return new WaitForSeconds(1);
  76.         Vector3 laserPos = new Vector3(transform.position.x, transform.position.y + -0.5f,  0);
  77.         GameObject gameObject = Instantiate(_enemyLaser, laserPos, Quaternion.identity);
  78.         _audioManager.EnemyShoot();
  79.     }
  80.  
  81.     private void OnTriggerEnter2D(Collider2D other)
  82.     {
  83.  
  84.         if (other.CompareTag("Player"))
  85.         {
  86.             EventManager.OnRemoveEnemyAFromList();//Remove from SpawnManager List Event
  87.             GameObject explosion = Instantiate(_enemyExplosion, transform.position, Quaternion.identity);
  88.  
  89.             _audioManager.PlayEnemyExplosionSound();
  90.  
  91.             Destroy(explosion,_enemyExplosionTime);
  92.             Destroy(this.gameObject);
  93.         }
  94.        
  95.        
  96.         if (other.CompareTag("PlayerLaser"))
  97.         {
  98.             EventManager.OnRemoveEnemyAFromList();//Remove from SpawnManager List Event
  99.             Destroy(other.gameObject);
  100.  
  101.             GameObject explosion = Instantiate(_enemyExplosion, transform.position, Quaternion.identity);
  102.  
  103.             if (_player && GameObject.Find("Player"))
  104.             {
  105.                 _player.AddPointToScore(10);
  106.             }
  107.            
  108.             _audioManager.PlayEnemyExplosionSound();
  109.  
  110.  
  111.             Destroy(explosion, _enemyExplosionTime);
  112.             Destroy(this.gameObject);
  113.         }
  114.  
  115.  
  116.         if (other.CompareTag("BallsOfDeath"))
  117.         {
  118.             EventManager.OnRemoveEnemyAFromList();//Remove from SpawnManager List Event
  119.             GameObject explosion = Instantiate(_enemyExplosion, transform.position, Quaternion.identity);
  120.  
  121.             if (_player && GameObject.Find("Player"))
  122.             {
  123.                 _player.AddPointToScore(10);
  124.             }
  125.  
  126.             _audioManager.PlayEnemyExplosionSound();
  127.  
  128.             Destroy(explosion, _enemyExplosionTime);
  129.             Destroy(this.gameObject);
  130.         }
  131.     }
  132. }
  133.  
Add Comment
Please, Sign In to add comment