How do I make onCollisionStay work?

So I’m trying to build a 3D platformer type game. It’s my first game, so it’s simple, and the main character is a sphere. What I’m trying to do is only allow the sphere to jump when it’s touching the ground. Here is the code I have so far:

//MU is the variable which holds the upwards force
//speedjump is a public variable which is a multiplier for the amount of jump
//rb is the rigidbody for my sphere/player
void onCollisionStay() {
MU = Input.GetAxis("Fire1")*speedjump;
        rb.AddForce(0.0f, MU, 0.0f);
}

So the onCollisionStay() should detect when I am touching the floor, and if I am pressing fire1, it should jump, right? But, for some reason, it isn’t jumping at all. The code above works in FixedUpdate, but then you can just fly, since it doesn’t check that you are touching the ground. Any help with this problem?

It’s OnCollisionStay, not onCollisionStay. Be careful with the spelling of Unity’s callbacks