Как сделать прыжок? Unity

using UnityEngine;

public class PlayController : MonoBehaviour 
{

    public Vector2 speed = new Vector2(50, 50);
    private Vector2 movement;
    Rigidbody2D rigidbody2D;
    public Vector2 jumpHeight;

        void Awake()
    {
        rigidbody2D = GetComponent();
        GetComponent().AddForce(jumpHeight, ForceMode2D.Impulse);
    }

  void Update () 
    {
        float inputX = Input.GetAxis("Horizontal");
        float inputY = Input.GetAxis("Vertical");

        movement = new Vector2
            (speed.x * inputX,
             speed.y * inputY);
  }

    void FixedUpdate()
    {
        rigidbody2D.velocity = movement;
    }

}

Должно быть, чтобы игрок не мог "лететь" в воздухе при нажатии на "вверх", а мог только подпрыгнуть один раз. Конечно, когда отпускаю клавишу "вверх", игрок резко падает. Rigidbody2D на игроке висит… И так голову ломаю, и сяк - не понимаю, где косяк.

Что нужно что бы все заработало:

1) Скопировать код.

2) Объект на котором висит Rigidbody должен иметь этот скрипт и коллайдер (обязательно 2д, не триггер)

3) Пол (то, с чем соприкасается объект игрока) должен иметь Layer "Ground" и коллайдер2д (не триггер)

Суть в том, что при вводе вы должны запоминать факт ввода клавиши прыжка и игнорировать его до приземления (для этого использован метод OnCollisionEnter2D)

public class PlayerController : MonoBehaviour
{
    Rigidbody2D m_Rigidbody;
    readonly Vector2 force = new Vector2(50, 50);
    bool inAir;
private void Start()
{
    m_Rigidbody = GetComponent();
}

void Update()
{
    if (Input.GetKey(KeyCode.Space)