Why does the attached code behave weirdly when placed in FixedUpdate() method but not in the Update() method?

if(touchingPlatform &&((((Input.touchCount>0)&&(Input.GetTouch(0).phase == TouchPhase.Began))||Input.GetButtonDown(“Jump”))/||jumpCommandWhileInAir/))
{
rigidbody.AddForce(jumpVelocity,ForceMode.VelocityChange);
//jumpCommandWhileInAir=false;

		}//end of if block

This code allows me to make my character(a cube) jump. When placed in the Update() method. It works as expected(the cube jumps a little distance). But, when placed in the FixedUpdate() method, the jump distance changes randomly, sometimes the jump is normal but every once in a while the cube jumps very high.
Any ideas what is happening?

It’s always better to get the Inputs in the Update method as it evaluates per frame.

FixedUpdate evaluates as per Fixed Timestep. So, you can’t get all of your touches in the FixedUpdate method. Use FixedUpdate only for physics implementation.