コード例 #1
0
        public void SecondJump(JoystickValues joystickValues)
        {
            _hasDoneFirstJump     = false;
            _straightUpSecondJump = false;

            var direction = Direction.Default;

            Vector3 forceDirection;

            if (joystickValues.X < -0.5f)
            {
                forceDirection = Vector3.left;
                direction      = Direction.Left;
            }
            else if (joystickValues.X > 0.5f)
            {
                forceDirection = Vector3.right;
                direction      = Direction.Right;
            }
            else if (joystickValues.Y > 0.5f || Input.GetButton(Constants.Input.Accelerate))
            {
                forceDirection = Vector3.forward;
                direction      = Direction.Forward;
            }
            else if (joystickValues.Y < -0.5f || Input.GetButton(Constants.Input.Decelerate))
            {
                forceDirection = Vector3.back;
                direction      = Direction.Backward;
            }
            else
            {
                // forceDirection = Vector3.forward;
                // direction = Direction.Forward;

                forceDirection        = Vector3.up;
                _straightUpSecondJump = true;
            }

            var forceUp          = Vector3.up * _jumpSettings.SecondJumpUpForce;
            var forceDirectional = forceDirection * _jumpSettings.SecondJumpLateralForces;

            if (_straightUpSecondJump)
            {
                _rb.AddRelativeForce(forceUp, ForceMode.Impulse);
            }
            else
            {
                _rb.AddRelativeForce(forceUp + forceDirectional, ForceMode.Impulse);
                StartCoroutine(CancelJumpVelocity(forceDirectional));
            }
            OnSecondJump.Invoke(direction);
        }
コード例 #2
0
 public void MapInputs()
 {
     if (Enabled && Input.GetButtonDown(Constants.Input.UseAbilityOnJoystick) ||
         Enabled && Input.GetButtonDown(Constants.Input.ActivateAbilityKeyboard))
     {
         JoystickValues joystickValues = new JoystickValues()
         {
             X = Input.GetAxis(Constants.Input.TurnAxis),
             Y = Input.GetAxis(Constants.Input.UpAndDownAxis)
         };
         UseAbility(joystickValues);
     }
 }
コード例 #3
0
        // PRIVATE

        private void UseAbility(JoystickValues joystickValues)
        {
            if (CanUseAbility)
            {
                if (!_hasDoneFirstJump && _groundCondition.Grounded)
                {
                    FirstJump();
                    StartCoroutine(SetOwnerInvincibility());
                    _timeBetweenFirstAndSecondJump = StartCoroutine(TimeBetweenFirstAndSecondJump());
                }
                else if (_hasDoneFirstJump && !_groundCondition.Grounded)
                {
                    SecondJump(joystickValues);
                    if (_timeBetweenFirstAndSecondJump != null)
                    {
                        StopCoroutine(_timeBetweenFirstAndSecondJump);
                    }
                    StartCoroutine(CooldownRoutine());
                    _hasDoneFirstJump = false;
                }
            }
        }