Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using System.Security.Cryptography;
- using UnityEngine;
- public class BossBehavior : MonoBehaviour
- {
- [SerializeField] private float _moveDownSpeed;
- [SerializeField] private float _backUpSpeed = 0;
- [SerializeField] private bool _canBossMoveDown;
- [SerializeField] private bool _fiveHits;
- [SerializeField] private bool _tenHits;
- [SerializeField] private GameObject _laserSpread1, _laserSpread2, _laserSpread3, _laserSpread4, _laserSpread5;
- [SerializeField] private GameObject _laser1, _laser2, _laser3, _laser4, _laser5;
- [SerializeField] private List<int> _countHits = new List<int>();
- // Start is called before the first frame update
- void Start()
- {
- _moveDownSpeed = 1;
- transform.position = new Vector3(0, 10, 0);
- _canBossMoveDown = true;
- InvokeRepeating("BossShooting", 2.0f, 1);
- }
- // Update is called once per frame
- void Update()
- {
- StartBossAIMovement();
- BossMovesAfterFiveHits();
- BossMovesAfterTenHits();
- }
- private void StartBossAIMovement()
- {
- if (_canBossMoveDown == true)
- {
- transform.Translate(Vector3.down * _moveDownSpeed * Time.deltaTime);
- }
- if (transform.position.y <= 3.5f)
- {
- _canBossMoveDown = false;
- }
- }
- private void BossMovesAfterFiveHits()
- {
- if (_countHits.Count == 5)
- {
- _fiveHits = true;
- transform.Translate(Vector3.up * _backUpSpeed * Time.deltaTime);
- }
- if (transform.position.y >= 10 && _fiveHits == true)
- {
- _backUpSpeed = 0;
- transform.position = new Vector3(-5, 10, 0);
- transform.Translate(Vector3.down * _moveDownSpeed * Time.deltaTime);
- }
- }
- private void BossMovesAfterTenHits()
- {
- if (_countHits.Count == 10)
- {
- _fiveHits = false;
- _tenHits = true;
- _canBossMoveDown = true;
- _backUpSpeed = 5;
- transform.Translate(Vector3.up * _backUpSpeed * Time.deltaTime);
- }
- if (transform.position.y >= 10 && _tenHits == true)
- {
- _backUpSpeed = 0;
- transform.position = new Vector3(5, 10, 0);
- transform.Translate(Vector3.down * _moveDownSpeed * Time.deltaTime);
- }
- }
- private void BossLaserSpread()
- {
- GameObject newLaserSpread1 = Instantiate(_laserSpread1, transform.position, Quaternion.identity);
- newLaserSpread1.transform.eulerAngles = new Vector3(0, 0, 10.0f);
- GameObject newLaserSpread2 = Instantiate(_laserSpread2, transform.position, Quaternion.identity);
- newLaserSpread2.transform.eulerAngles = new Vector3(0, 0, -10.0f);
- GameObject newLaserSpread3 = Instantiate(_laserSpread3, transform.position, Quaternion.identity);
- newLaserSpread3.transform.eulerAngles = new Vector3(0, 0, 20.0f);
- GameObject newLaserSpread4 = Instantiate(_laserSpread4, transform.position, Quaternion.identity);
- newLaserSpread4.transform.eulerAngles = new Vector3(0, 0, -20.0f);
- Instantiate(_laserSpread5, transform.position, Quaternion.identity);
- }
- private void BossShooting()
- {
- int _randomNumber = Random.Range(0, 5);
- switch (_randomNumber)
- {
- case 0:
- Instantiate(_laser1, new Vector3(transform.position.x + -2.23f, transform.position.y + -1.5f, 0), Quaternion.identity);
- break;
- case 1:
- Instantiate(_laser2, new Vector3(transform.position.x + 2.23f, transform.position.y + -1.5f, 0), Quaternion.identity);
- break;
- case 2:
- Instantiate(_laser3, new Vector3(transform.position.x + -1.46f, transform.position.y + -3, 0), Quaternion.identity);
- break;
- case 3:
- Instantiate(_laser4, new Vector3(transform.position.x + 1.4f, transform.position.y + -3, 0), Quaternion.identity);
- break;
- case 4:
- Instantiate(_laser5, new Vector3(transform.position.x, transform.position.y + -3, 0), Quaternion.identity);
- break;
- }
- }
- private void OnTriggerEnter2D(Collider2D collision)
- {
- if (collision.CompareTag("PlayerLaser"))
- {
- BossLaserSpread();
- Destroy(collision.gameObject);
- _countHits.Add(1);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement