Jump without character controller??

Hi,

I’m trying to make my car (no wheels or anything fancy, it’s just a box with colliders and a rigid body) jump so that it can jump over obstacles. The problem is I can’t seem to get it to work correctly, all the other answers on here use character controllers (which will not work for me).

Could someone please help me figure this out with just a rigid body?

This is what I have:

var jumpForce : float = 5;

function Update () {
	if(Input.GetButton("Vertical")){
		rigidbody.AddForce(Vector3.up * jumpForce);
	}
}

But this will continously add force to my car for as long as the up arrow is pressed, I wan’t it to reach a max height and then stop adding the force.

Thanks a lot! :smiley:

First, use GetButtonDown instead of GetButton, that will happen only return true once, when the user presses the button instead of continuously returning true as long as the button is held down.

Second, add a bool to check if the user is in the air or on the ground so you won’t be able to continue adding force up when in mid-air.

Or if you want to allow the user to have the option of keeping the button pressed to determine the height of the jump, do something like this:

var jumpTimer : float; // in seconds
var maxJumpTime : float = 2; // in seconds
function Update () {
  if(carIsGrounded()) { // you have to implement this one yourself, eg with a Raycast
    jumpTimer = 0;
  }
  if(Input.GetButton("Vertical") && jumpTimer < maxJumpTime) {
    jumpTimer += Time.deltaTime;
    rigidbody.AddForce(Vector3.up * jumpForce);
  }

(since links don’t work inside code sigh : Raycast)

(didn’t actually tested the code, sry)

hope thats helps