Double jumping not working - can't find the culprit

Hello

I’m new to scripting and thus follow a tutorial. My double jumping isn’t working, though, and I went through the code in the tutorial again, but couldn’t find the culprit.
I tried adding a public Rigidbody2D to reference and then set it’s velocity on the Y axis to 0, but alas.
Here’s my entire player script, sorry if it looks a bit weird and confusing, I took the irrelevant parts out:

using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using UnityEngine.SceneManagement;

public class Player : MonoBehaviour 
{
	public float power = 500;
	public int jumpHeight = 1000;
	public bool isFalling = false;
	public int Score;
	public Text SCORE;
	public GameObject YOUDIED;

	private int health = 3;

	public GameObject health1;
	public GameObject health2;
	public GameObject health3;
	public int Highscore;

	private bool canDoubleJump;
	private bool jumpOne;
	private bool jumpTwo;

	// Use this for initialization
	void Start () 
	{
		YOUDIED.SetActive (false);
		Highscore = PlayerPrefs.GetInt ("Længste karriere: ", 0);
		jumpOne = false;
		jumpTwo = false;
		canDoubleJump = false;

	}

	void Update()
	{
		if (Input.GetKey (KeyCode.Space) && health == 0)
		{
			Time.timeScale = 1f;
			health = 3;
			SceneManager.LoadScene (0);
		}
		if (health == 3) 

		{
			health1.SetActive (true);
			health2.SetActive (true);
			health3.SetActive (true);
		}

		if (health == 2) 
		{
			health1.SetActive (true);
			health2.SetActive (true);
			health3.SetActive (false);
		}
		if (health == 1) 

		{
			health1.SetActive (true);
			health2.SetActive (false);
			health3.SetActive (false);
		}
		if (health == 0) 

		{
			health1.SetActive (false);
			health2.SetActive (false);
			health3.SetActive (false);
		}
		if (health <= 0)
		{
			YOUDIED.SetActive (true);
			Time.timeScale = 0.0f;
		}
		SCORE.text = "Dage " + Score;
		transform.Translate (Vector2.right * power * Time.deltaTime);
		if (Input.GetKeyDown (KeyCode.Space) && isFalling == false) 
		{
			jumpOne = true;
			canDoubleJump = true;
			isFalling = true;
		}
		if (Input.GetKeyDown (KeyCode.Space) && isFalling == true && canDoubleJump == true) 
		{
			jumpTwo = true;
			canDoubleJump = false;
		}
	}
	
	// Update is called once per frame
	void FixedUpdate () 
	{
		if (jumpOne == true) 
		{
			GetComponent<Rigidbody2D> ().AddForce (Vector2.up * jumpHeight);
			jumpOne = false;
		}
		if (jumpTwo == true) 
		{
			GetComponent<Rigidbody2D> ().AddForce (Vector2.up * jumpHeight);
			jumpTwo = false;
		}
	}
	void OnCollisionStay2D (Collision2D coll)
	{
		if (coll.gameObject.tag == "Ground") 
		{
			isFalling = false;
			canDoubleJump = false;
		}

	}
	public void ScorePlus (int NewScore)
	{
		Score += NewScore;
		if (Score >= Highscore)
		{
			Highscore = Score;
			PlayerPrefs.SetInt("Længste karriere: ", Highscore);
		}
	}

	void OnTriggerEnter2D (Collider2D coll)
	{
		if (coll.gameObject.tag == "Death")
		{
			health -= 1;
	}
 }
}

Do not use Input.GetKeyDown (KeyCode.Space) two times within the Update to see if the button is pressed two times. When someone holds the key down both will be activated

  • check if the key is pressed with Input.GetKeyDown (KeyCode.Space)
  • check if the key is release with input.GetKeyUp(KeyCode.Space) to get
    ready for the next jump.
  • check the time between release and the next press to see if double jump
    is allowed.