- Home /
Random 2D Jumping With rigidbody2D.AddForce
I'm working on a a 2D platformer and the physics involved with the jumps seem to be random. For some jumps he keeps the same height but some he then almost doubles his height for some reason. I don't know how to fix this other than directly adjusting the players transform (which just doesn't feel as natural or smooth). I've posted my player movement script (It's pretty basic because I'm not much of a programmer) and a link to a video showing the problem.
var movementSpeed : float = 200;
var jumpSpeed : float = 300;
var grounded : boolean = false;
var cutScene : boolean = false;
function Update () {
//move
if(cutScene == false)
rigidbody2D.MoveRotation(rigidbody2D.rotation - (movementSpeed * Input.GetAxis("Horizontal")) * Time.deltaTime);
//jump
if(Input.GetAxis ("Jump") && grounded)
rigidbody2D.AddForce(Vector2(0, jumpSpeed));
}
//test if grounded
function OnCollisionEnter2D(collision: Collision2D) {
if (collision.gameObject.tag == "Ground")
grounded = true;
}
function OnCollisionExit2D(collision: Collision2D) {
if (collision.gameObject.tag == "Ground")
grounded = false;
}
https://dl.dropboxusercontent.com/u/26430893/Temp/Recording%20%2803%29.mp4
Let me know if you need more info. Thanks =)
Answer by pako · Feb 21, 2015 at 08:47 PM
Try putting the jump code inside FixedUpdate() instead of Update().
Your answer
Follow this Question
Related Questions
Platformer2D Player sticks to platform corners 0 Answers
increasing knockback of a rigidbody as received damage increases (like super smash) 1 Answer
About Rigidbody2D.AddForce's duration... 2 Answers
How much force does my 2d ball need to fly from point A to B ? 1 Answer
2D Physics Problem? 1 Answer