diff options
Diffstat (limited to 'client')
-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 |