RIgid body jump

Hi there, sometimes when I press the jump button the rigid body just ignore the command, I tried really hard but couldn’t get it fixed, can someone please help me?

using UnityEngine;
using System.Collections;

public class playerJump : MonoBehaviour {
	
	public float jumpStrenght;
	public bool doubleJump;
	
	private float multiplier;
	private int jumpCounter;
	
	// Use this for initialization
	void Start () {
		multiplier = 100.0f;
		if(doubleJump){
			jumpCounter = 2;
		}else{
			jumpCounter = 1;
		}
	}
	
	void FixedUpdate () {
		if(Input.GetButtonDown("Jump")){
			if(jumpCounter>0){
				//decrease the jump counter untill it touches the ground
				jumpCounter--;
				jump(jumpStrenght);
			}
		}
	}
	
	void OnCollisionEnter(Collision other){
		//Sets the double jump property
		if(other.gameObject.CompareTag("Terrain")){
			if(doubleJump){
				jumpCounter = 2;
			}else{
				jumpCounter = 1;
			}
		}
	}
	
	public void jump(float strenght){
		rigidbody.AddForce(new Vector3(0,Time.deltaTime*strenght*multiplier,0),ForceMode.Impulse);
	}
	
}

if needed I can post my player controller script too.

I believe the ground needs to be a rigidbody as well but not 100%, my suggestion is to use a ray, this way you don’t have to relay on the collision function.

private RaycastHit hit;

private void CheckIfGrounded()
    {
        // checks to make sure you are on the ground
        if (Physics.Raycast(transform.position, -Vector3.up, out hit, 0.5f)){
            if (hit.collider.gameObject.tag == "Terrain"){
               if(doubleJump){
                       jumpCounter = 2;
                }
                else{
                      jumpCounter = 1;
                }
            }
        }
    }

Thanks a lot!
The ground is a simple terrain and using the raycast solution worked really well.

No problem, glad it worked.