- Home /
2D player jumps too high
Heres the script: using System.Collections; using System.Collections.Generic; using UnityEngine;
public class PlayerScript : MonoBehaviour {
public float speed;
public float jumpSpeed;
private Rigidbody2D rb;
public bool isGrounded;
public LayerMask ground;
public Transform groundCheck;
public Vector2 groundSize;
void Awake () {
rb = GetComponent<Rigidbody2D> ();
}
void FixedUpdate () {
isGrounded = Physics2D.Raycast (transform.position, transform.TransformDirection (Vector3.down), 0.55f, ground);
var mH = Input.GetAxis ("Horizontal");
var movement = new Vector2 (mH, rb.velocity.y);
rb.velocity = movement * speed;
if (Input.GetKeyDown ("space") && isGrounded) {
rb.velocity = new Vector2 (rb.velocity.x, jumpSpeed);
}
}
}
When i try to jump my player jumps very very high. I tried setting the jumpSpeed variable more low, but the problem is when i set it too low it doesn't jump. my player is a square and i tried using rigidbody.AddForce but theres the same problem.
The velocity is set 5000, not to jumpSpeed
Can any body help?
Thank you
Answer by woocash33 · Dec 31, 2018 at 12:22 AM
When you press spacebar your rb.velocity.y gets updated, so does "movement" next frame. Every next frame it gets multiplied by "speed" so it goes off the scale quickly. Try multiplying only the "x" component of "movement" by "speed".
Answer by saadali211 · Mar 21, 2019 at 06:56 PM
you can fix that by this code when the player is back to ground
if (col.gameObject.tag == "Ground") { IsGrounded = true; rb.velocity = Vector3.zero; rb.angularVelocity = 0f; }
Your answer
Follow this Question
Related Questions
Rigidbody2d not falling once in the air 1 Answer
Convert Force into Velocity for 2D Player Jump 0 Answers
My player jumps higher when the ground is aslant? 1 Answer
rigidbody2D : X velocity is slowed down when I jump. 1 Answer
2D Jump AI Help 0 Answers