private void MovePlayer() { if (isGrounded) { Vector3 slopeVector = SlopeCheck(); float moveIntensity = Vector2.Distance(Vector2.zero, new Vector2(horizontalInput, verticalInput)); //velocityVector = new Vector3((playerRb.transform.forward.x + slopeVector.x) * moveIntensity * moveSpeed, 0f, (playerRb.transform.forward.z + slopeVector.z) * moveIntensity * moveSpeed); velocityVector = new Vector3((slopeVector.x) * moveIntensity * moveSpeed, 0f, (slopeVector.z) * moveIntensity * moveSpeed); playerAnimationController.HandlePlayerSpeed(Mathf.Clamp01(moveIntensity)); yVelocity = slopeVector.y * moveIntensity * moveSpeed; if (shouldJump) { yVelocity = jumpForce; isJumping = true; shouldJump = false; } } else { yVelocity = yVelocity - playerGravity; if (!isJumping) { velocityVector = new Vector3(transform.forward.x * 0.1f * moveSpeed, 0f, transform.forward.z * 0.1f * moveSpeed); //switch isJumping back to false when the jump has ended } } velocityVector.y = yVelocity; playerRb.velocity = velocityVector; }