Ejemplo n.º 1
0
    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);
    }
Ejemplo n.º 2
0
    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);
            }
        }
    }