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 | |
| parent | 12b06f3b8769467b957986e2b2601f6dfb7f9dc6 (diff) | |
| download | hurrycurry-3ea4e19d3ca7d1206408c113e1d2e0d27a6e6323.tar hurrycurry-3ea4e19d3ca7d1206408c113e1d2e0d27a6e6323.tar.bz2 hurrycurry-3ea4e19d3ca7d1206408c113e1d2e0d27a6e6323.tar.zst | |
substep movement if laggy
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 | 
