I hate to post another thread on this topic, but this has been brought up frequently on this forum over the years and on the Discord and it hasn't been resolved.
Essentially, if you set UltimateCharacterLocomotion's Update Location to Fixed Update then the mouse sensitivity in-game becomes linked to the framerate. This bug has been in UCC for several years (as long as I've used it) and is still present in the latest version.
Unity version: 2020.3.6f1
UCC version: 2.3.3 June 17th release
Replication steps:
- Set up UCC in first person combat mode in a blank scene with the framerate uncapped.
- Add a ton of objects on one side of the scene so that the framerate drops considerably when you look at them.
- Build the game and start it up.
- Move the mouse slowly and at a constant speed to rotate your character in a circle.
- You will notice that your camera does not rotate at a consistent rate. It quickly skips over the low framerate area as the mouse sensitivity jumps as the framerate goes down.
Setting the update location to Update solves this but also comes with its own bizarre bug where jumping force and gravity become linked to the framerate. If you reduce your framerate, you can actually jump higher and will fall more slowly. Conversely, players with 240hz monitors running at 240 fps can only jump about 2cm off the ground. The only way to solve this somewhat seems to be to lock the frame rate to 60, which produces consistent results everywhere but isn't really an acceptable solution in 2021 when people have 240hz monitors and graphics cards that use more electricity than Lichtenstein.
So right now I have a choice between having rotation broken or jumping and falling broken. I suspect there's something wrong with how TimeUtility.FramerateDeltaTime is being used. The jump height bug still applies all of the jump force in one frame as specified in the Jump's parameters, for example, but the height seems to be being scaled by FrameRateDeltaTime somehow.
Any thoughts?
Essentially, if you set UltimateCharacterLocomotion's Update Location to Fixed Update then the mouse sensitivity in-game becomes linked to the framerate. This bug has been in UCC for several years (as long as I've used it) and is still present in the latest version.
Unity version: 2020.3.6f1
UCC version: 2.3.3 June 17th release
Replication steps:
- Set up UCC in first person combat mode in a blank scene with the framerate uncapped.
- Add a ton of objects on one side of the scene so that the framerate drops considerably when you look at them.
- Build the game and start it up.
- Move the mouse slowly and at a constant speed to rotate your character in a circle.
- You will notice that your camera does not rotate at a consistent rate. It quickly skips over the low framerate area as the mouse sensitivity jumps as the framerate goes down.
Setting the update location to Update solves this but also comes with its own bizarre bug where jumping force and gravity become linked to the framerate. If you reduce your framerate, you can actually jump higher and will fall more slowly. Conversely, players with 240hz monitors running at 240 fps can only jump about 2cm off the ground. The only way to solve this somewhat seems to be to lock the frame rate to 60, which produces consistent results everywhere but isn't really an acceptable solution in 2021 when people have 240hz monitors and graphics cards that use more electricity than Lichtenstein.
So right now I have a choice between having rotation broken or jumping and falling broken. I suspect there's something wrong with how TimeUtility.FramerateDeltaTime is being used. The jump height bug still applies all of the jump force in one frame as specified in the Jump's parameters, for example, but the height seems to be being scaled by FrameRateDeltaTime somehow.
Any thoughts?