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 | 
