Screen sizes and physics inconsistencies

I have a simple 2D game. I sometimes find that my character would jump further and move faster in some test runs of gameplay. I figured out this was because sometimes I would use full screen and sometimes not.
Like most tutorials my movement is configured by a group of variables on my sprite (speed, jump height ect) and I am using Update for my movements script. In other words, that’s where I capture keyboard inputs and calculate movement. I don’t use FixedUpdate for this. The reason is that FixedUpdate seems to give me issues when trying to craft a nice jump cycle. That way I can control the amount of time in the air and the length of the decent.My timers that I use to control my jump time are frame accurate in Update.

I did as, an experiment refactor, my movement logic into FixedUpdate, but I still saw the same issues with different sized screens giving me different results.

I think I am missing something fundamental with my understanding of displays, physics and jump logic. Has anyone ran into similar issues before and how have you fixed this? I dont want to not use the Physics engines as RigidBodies are pretty handy, but I do need to have more control over my jumps and I need it to be consistent.

Update() isn’t frame accurate.

Also if you move things or count timers yourself in Update(), you must adjust by Time.deltaTime.

If you count integer frames in Update() you will not me time accurate.

If you’re using Physics, do that work in FixedUpdate() or else you will have framerate variance.

Here is some timing diagram help:

https://docs.unity3d.com/Manual/ExecutionOrder.html

Im not sure I understand. If Update happens once per frame, why is it not frame accurate?

I’m not well versed in 2D so I will not give you advise on whether you should use RigidBody2D or not. But FYI: You can switch the Physics2D to Update mode, so it won’t be detached from the Update cycle anymore. You don’t have to put your logic in FixedUpdate.