Advertisement
SizilStank

Untitled

Jan 19th, 2023 (edited)
1,009
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.60 KB | Gaming | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using System.Security.Cryptography;
  4. using UnityEngine;
  5.  
  6. public class BossBehavior : MonoBehaviour
  7. {
  8.  
  9.     [SerializeField] private float _moveDownSpeed;
  10.     [SerializeField] private float _backUpSpeed = 0;
  11.  
  12.  
  13.     [SerializeField] private bool _canBossMoveDown;
  14.     [SerializeField] private bool _fiveHits;
  15.     [SerializeField] private bool _tenHits;
  16.    
  17.  
  18.     [SerializeField] private GameObject _laserSpread1, _laserSpread2, _laserSpread3, _laserSpread4, _laserSpread5;
  19.     [SerializeField] private GameObject _laser1, _laser2, _laser3, _laser4, _laser5;
  20.  
  21.     [SerializeField] private List<int> _countHits = new List<int>();
  22.  
  23.     // Start is called before the first frame update
  24.     void Start()
  25.     {
  26.         _moveDownSpeed = 1;
  27.        
  28.         transform.position = new Vector3(0, 10, 0);
  29.         _canBossMoveDown = true;
  30.         InvokeRepeating("BossShooting", 2.0f, 1);
  31.  
  32.        
  33.     }
  34.  
  35.     // Update is called once per frame
  36.     void Update()
  37.     {
  38.         StartBossAIMovement();
  39.         BossMovesAfterFiveHits();
  40.         BossMovesAfterTenHits();
  41.     }
  42.  
  43.     private void StartBossAIMovement()
  44.     {
  45.         if (_canBossMoveDown == true)
  46.         {
  47.             transform.Translate(Vector3.down * _moveDownSpeed * Time.deltaTime);
  48.         }
  49.  
  50.         if (transform.position.y <= 3.5f)
  51.         {
  52.             _canBossMoveDown = false;
  53.         }
  54.     }
  55.  
  56.     private void BossMovesAfterFiveHits()
  57.     {
  58.         if (_countHits.Count == 5)
  59.         {
  60.             _fiveHits = true;
  61.             transform.Translate(Vector3.up * _backUpSpeed * Time.deltaTime);
  62.         }
  63.  
  64.         if (transform.position.y >= 10 && _fiveHits == true)
  65.         {
  66.             _backUpSpeed = 0;
  67.             transform.position = new Vector3(-5, 10, 0);
  68.             transform.Translate(Vector3.down * _moveDownSpeed * Time.deltaTime);
  69.         }
  70.     }
  71.  
  72.     private void BossMovesAfterTenHits()
  73.     {
  74.         if (_countHits.Count == 10)
  75.         {
  76.             _fiveHits = false;
  77.             _tenHits = true;
  78.             _canBossMoveDown = true;
  79.             _backUpSpeed = 5;
  80.             transform.Translate(Vector3.up * _backUpSpeed * Time.deltaTime);
  81.         }
  82.  
  83.         if (transform.position.y >= 10 && _tenHits == true)
  84.         {
  85.             _backUpSpeed = 0;
  86.             transform.position = new Vector3(5, 10, 0);
  87.             transform.Translate(Vector3.down * _moveDownSpeed * Time.deltaTime);
  88.         }
  89.     }
  90.  
  91.  
  92.     private void BossLaserSpread()
  93.     {
  94.         GameObject newLaserSpread1 = Instantiate(_laserSpread1, transform.position, Quaternion.identity);
  95.         newLaserSpread1.transform.eulerAngles = new Vector3(0, 0, 10.0f);
  96.  
  97.         GameObject newLaserSpread2 = Instantiate(_laserSpread2, transform.position, Quaternion.identity);
  98.         newLaserSpread2.transform.eulerAngles = new Vector3(0, 0, -10.0f);
  99.  
  100.         GameObject newLaserSpread3 = Instantiate(_laserSpread3, transform.position, Quaternion.identity);
  101.         newLaserSpread3.transform.eulerAngles = new Vector3(0, 0, 20.0f);
  102.  
  103.         GameObject newLaserSpread4 = Instantiate(_laserSpread4, transform.position, Quaternion.identity);
  104.         newLaserSpread4.transform.eulerAngles = new Vector3(0, 0, -20.0f);
  105.  
  106.         Instantiate(_laserSpread5, transform.position, Quaternion.identity);
  107.        
  108.     }
  109.  
  110.     private void BossShooting()
  111.     {
  112.         int _randomNumber = Random.Range(0, 5);
  113.         switch (_randomNumber)
  114.         {
  115.             case 0:
  116.                 Instantiate(_laser1, new Vector3(transform.position.x + -2.23f, transform.position.y + -1.5f, 0), Quaternion.identity);
  117.                 break;
  118.             case 1:
  119.                 Instantiate(_laser2, new Vector3(transform.position.x + 2.23f, transform.position.y + -1.5f, 0), Quaternion.identity);
  120.                 break;
  121.             case 2:
  122.                 Instantiate(_laser3, new Vector3(transform.position.x + -1.46f, transform.position.y + -3, 0), Quaternion.identity);
  123.                 break;
  124.             case 3:
  125.                 Instantiate(_laser4, new Vector3(transform.position.x + 1.4f, transform.position.y + -3, 0), Quaternion.identity);
  126.                 break;
  127.             case 4:
  128.                 Instantiate(_laser5, new Vector3(transform.position.x, transform.position.y + -3, 0), Quaternion.identity);
  129.                 break;
  130.         }
  131.     }
  132.  
  133.  
  134.     private void OnTriggerEnter2D(Collider2D collision)
  135.     {
  136.         if (collision.CompareTag("PlayerLaser"))
  137.         {
  138.             BossLaserSpread();
  139.             Destroy(collision.gameObject);
  140.             _countHits.Add(1);
  141.         }
  142.     }
  143. }
  144.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement