simple jump-script (2D)

I just started to make my first game with Unity - a simple Jump 'n Run. I used Rigidbody2D.AddForce for the jump mechanic. Right now I can jump out of the window, if I hold the UpArrow down. What I am looking for is an option to maximize the jump height. I tried to build a trigger-box and putting the jumping-script into an OnTriggerStay-function, but this doesn’t work. As I can’t find an answer in the Manual, Scripting API or the internet I would appreciate some help :slight_smile:

That’s my current code:

public class Player : MonoBehaviour 
{
	public float moveSpeed;
	public float jumpPower;

	void Update () 
	{
		if (Input.GetKey(KeyCode.RightArrow))
			transform.Translate(Vector3.right * moveSpeed * Time.deltaTime);
		if (Input.GetKey(KeyCode.LeftArrow))
			transform.Translate(-Vector2.right * moveSpeed * Time.deltaTime);

		Rigidbody2D rb = GetComponent<Rigidbody2D> ();
		if (Input.GetKey(KeyCode.UpArrow))
			rb.AddForce(Vector2.up * jumpPower);
	}
}

What I found in the Scripting API was AddForce.impulse. This sounds like what I am looking for. But unfortunately I am not able to implement it.

This tutorial has great tips on making a 2D character controller you can apply. I suggest you use a grounded flag approach (using a boolean to check if the object is touching the ground and not allowing it to jump if it’s not grounded).