void Init() { transform.position = Vector2.zero; _baseSpeed = _speed; _currentAmmo = _maxAmmo; _lives = _maxLives; _tripleShotDuration = _powerUpDuration; _speedBoostDuration = _powerUpDuration; _omniShotDuration = _powerUpDuration; _negativeEffectDuration = _powerUpDuration; _shieldRenderer = _shieldVisual.GetComponent <SpriteRenderer>(); _fullShieldColor = _shieldRenderer.color; _shieldVisual.SetActive(false); for (int i = 0; i < _engineFires.Length; i++) { _engineFires[i].SetActive(false); } OnUpdateLives?.Invoke(_lives); OnUpdateThuster?.Invoke(_elapsedTime, _thrusterBurnLength); OnUpdateAmmo?.Invoke(_currentAmmo, _maxAmmo); OnUpdateMissiles?.Invoke(_currentMissiles, _numberOfMissiles); }
private void CalculateMovement() { if (Input.GetKeyDown(KeyCode.LeftShift) && _isThrusterDown == false) { _speed += _thrusterBoost; _isThrusterActive = true; } if (Input.GetKeyUp(KeyCode.LeftShift)) { _speed = _baseSpeed; _isThrusterActive = false; } if (_isThrusterActive == true) { _elapsedTime += Time.deltaTime; if (_elapsedTime > _thrusterBurnLength) { _elapsedTime = _thrusterBurnLength; _isThrusterDown = true; _isThrusterActive = false; _speed = _baseSpeed; } OnUpdateThuster?.Invoke(_elapsedTime, _thrusterBurnLength); } else if (_isThrusterActive == false && _elapsedTime > 0) { _elapsedTime -= Time.deltaTime; if (_elapsedTime < 0) { _elapsedTime = 0; _isThrusterDown = false; } OnUpdateThuster?.Invoke(_elapsedTime, _thrusterBurnLength); } float hInput = Input.GetAxis("Horizontal"); float vInput = Input.GetAxis("Vertical"); Vector2 direction = new Vector2(hInput, vInput); if (direction.x != 0 || direction.y != 0) { if (_isSpeedBoostActive == true) { transform.Translate(direction * (_speed * _speedMultiplier) * Time.deltaTime); } else { transform.Translate(direction * _speed * Time.deltaTime); } } transform.position = new Vector2(transform.position.x, Mathf.Clamp(transform.position.y, _downBounds, _upBounds)); if (transform.position.x > _rightBounds) { if (_wrapHorizontal == true) { transform.position = new Vector2(_leftBounds, transform.position.y); } else { transform.position = new Vector2(_rightBounds, transform.position.y); } } else if (transform.position.x < _leftBounds) { if (_wrapHorizontal == true) { transform.position = new Vector2(_rightBounds, transform.position.y); } else { transform.position = new Vector2(_leftBounds, transform.position.y); } } }