diff options
author | metamuffin <metamuffin@disroot.org> | 2024-06-30 00:36:14 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-06-30 00:36:14 +0200 |
commit | 3ea4e19d3ca7d1206408c113e1d2e0d27a6e6323 (patch) | |
tree | db625b6cd140d35d6c024081c367215458cd274c /client/player/controllable_player.gd | |
parent | 12b06f3b8769467b957986e2b2601f6dfb7f9dc6 (diff) | |
download | hurrycurry-3ea4e19d3ca7d1206408c113e1d2e0d27a6e6323.tar hurrycurry-3ea4e19d3ca7d1206408c113e1d2e0d27a6e6323.tar.bz2 hurrycurry-3ea4e19d3ca7d1206408c113e1d2e0d27a6e6323.tar.zst |
substep movement if laggy
Diffstat (limited to 'client/player/controllable_player.gd')
-rw-r--r-- | client/player/controllable_player.gd | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/client/player/controllable_player.gd b/client/player/controllable_player.gd index 67a7ca09..e2864290 100644 --- a/client/player/controllable_player.gd +++ b/client/player/controllable_player.gd @@ -52,6 +52,21 @@ func _input(_event): chat_open = !chat_open func _process(delta): + do_tick() + super(delta) + +const MAX_DT = 1./50. +var last_tick = Time.get_ticks_usec() +func do_tick(): + var now = Time.get_ticks_usec() + var delta = (now - last_tick) / 1_000_000. + last_tick = now + while delta > 0.001: + var dt = min(delta, MAX_DT) + _process_movement(dt) + delta -= dt + +func _process_movement(delta): var input = Input.get_vector("left", "right", "forward", "backwards") var boost = Input.is_action_pressed("boost") input = input.rotated( - game.camera.angle_target) @@ -66,7 +81,6 @@ func _process(delta): ) interact() update(delta, input, boost) - super(delta) character.walking = input.length_squared() > 0.1 character.boosting = boosting |