private void Update() { // if stun timer expired if (IsStunned && Time.time - _lastStunTime > StunDuration) { RemoveStun(); } if (!IsStunned) { // if fire timer expired if (CanShoot && Time.time - _lastFireTime > _nextFiringInterval) { FireGun(); } if (SpeedBoostIsActive) { float currentDisplacement = -Time.deltaTime * _basicMoveScript.MoveSpeed * (_basicMoveScript.SpeedCoef - 1.0f); float displacementChange = MakeDisplacementChange(currentDisplacement); OnDisplaced(displacementChange); if (_assignedEnemyWave != null) { _assignedEnemyWave.OnEnemyDisplacementChanged(); } } if (transform.position.x < DestructionHorizontalMinCoord) { if (_assignedEnemyWave != null) { _assignedEnemyWave.OnEnemyCountChanged(); } RemoveFromScene(); } } }