void LaserBeams(bool turnOn) { if (_activeEmitters <= 0) { OnStopLoopingSFX?.Invoke(); _inFinalStage = true; return; } if (turnOn == true) { OnPlayLoopingSFX?.Invoke(_laserBeamClip); for (int i = 0; i < _beamEmitterList.Count; i++) { GameObject obj = _beamEmitterList[i].gameObject; if (obj.activeInHierarchy == true) { _beamEmitterList[i].LaserBeams(turnOn); } } } else { OnStopLoopingSFX?.Invoke(); for (int i = 0; i < _beamEmitterList.Count; i++) { GameObject obj = _beamEmitterList[i].gameObject; if (obj.activeInHierarchy == true) { _beamEmitterList[i].LaserBeams(turnOn); } } } }
void Update() { if (_activeEmitters <= 0) { OnStopLoopingSFX?.Invoke(); _inFinalStage = true; } else { CheckEmitters(); } if (_inPosition == false) { transform.position = Vector2.MoveTowards(transform.position, _finalPosition, _speed * Time.deltaTime); if (transform.position == (Vector3)_finalPosition) { for (int i = 0; i < _beamEmitterList.Count; i++) { _beamEmitterList[i].ActivateCollider(); } _inPosition = true; _coverShield.SetActive(false); StartCoroutine(BossFightCoroutine()); } } else { transform.Rotate(Vector3.forward * _rotSpeed * Time.deltaTime); } if (_currentState == EnemyState.FiringBeams && _beamsActive == false) { _beamsActive = true; LaserBeams(_beamsActive); } else if (_currentState == EnemyState.FiringMissiles && Time.time >= _canFire) { if (_beamsActive == true) { _beamsActive = false; LaserBeams(_beamsActive); } FireMissiles(); } }