- Home /
How to make jump working
Hi, I'am trying to make my PlayerController with help of CharacterController and everything works as supposed except of one thing and that one thing is jumping, when i try to jump it just make debug log and really really small movement up and if i make jumpHeight really big it just teleport me to sky and not smoothly jump. Here is my code and sorry for my english :D
private void PlayerMovement() { float moveX = Input.GetAxis("Horizontal") * speed; float moveZ = Input.GetAxis("Vertical") * speed; moveDir = new Vector3(moveX, 0, moveZ); moveDir = transform.TransformDirection(moveDir); if(controller.isGrounded && Input.GetKeyDown(KeyCode.Space)) { moveDir.y = Mathf.Sqrt(jumpHeight * -3f * gravity); Debug.Log("Jumped"); } moveDir.y += gravity; controller.Move(moveDir * Time.deltaTime); }
Answer by swanne · Oct 12, 2021 at 04:49 PM
Hey,
I always prefer to use the AddForce method on Rigidbody to achieve jump. You can adjust the mass and gravity and force variables from the inspector to give better testing.
My code uses the new Input system but hopefully you'll be able to understand the concept:
void Start()
{
playerActionControls.Land.Jump.performed += _ => Jump();
}
void Update()
{
Move();
}
private void Move()
{
// Read the movement value
float movementInput = playerActionControls.Land.Move.ReadValue<float>(
// Move the player
Vector3 currentPosition = transform.position;
currentPosition.x += movementInput * speed * Time.deltaTime;
transform.position = currentPosition;
}
private void Jump()
{
if (IsGrounded())
{
rb.AddForce(new Vector2(0, jumpSpeed), ForceMode2D.Impulse);
}
}
Your answer
Follow this Question
Related Questions
Anti-Gravity isn't working 1 Answer
Jumping script WONT WORK!!!!!!!! for 2D 1 Answer
Gravity and jumping is wierd 1 Answer
Adding a jump feature help? 2 Answers
Why when i press space button nothing was happened 0 Answers