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); }
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); } }
// 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; } } }