You might be pushing it from the wrong method.

The problem
Physics forces in Update.
void Update(){ rb.AddForce( Vector3.forward * 10f );}
On a fast PC this adds more force per physics step than on a slow one.
Why it happens
Two different clocks.
Update follows the frame rate. Physics runs on its own fixed timestep.
- Update
- every frame, uneven
- FixedUpdate
- every physics step, steady
The fix
Push physics in FixedUpdate.
void FixedUpdate(){ rb.AddForce( Vector3.forward * 10f );}
FixedUpdate runs once per physics step, so every step gets the same push.
But
Read input in Update.
void Update(){ if ( Input.GetKeyDown( KeyCode.Space ) ) _jump = true;} void FixedUpdate(){ if ( !_jump ) return; rb.AddForce( Vector3.up * 5f, ForceMode.Impulse ); _jump = false;}
GetKeyDown is true for one frame only. Catch it in Update, act on it in FixedUpdate.
The rule
Input in Update. Physics in FixedUpdate.
- Reading keys
- Update
- Forces, velocity
- FixedUpdate
- Visuals
- Update