Implemented physics interpolation
This commit is contained in:
@ -1,22 +1,25 @@
|
||||
class_name ProxyController
|
||||
extends Controller
|
||||
|
||||
@export var interpolation_speed := 5.0
|
||||
@export var interpolation_speed := 20.0
|
||||
|
||||
var player: Player
|
||||
var movement: MovementComponent
|
||||
var server_position: Vector3
|
||||
|
||||
func _init(new_player: Player):
|
||||
player = new_player
|
||||
movement = player.movement
|
||||
name = "Controller"
|
||||
process_physics_priority = 1
|
||||
|
||||
func _ready():
|
||||
server_position = player.position
|
||||
|
||||
func _physics_process(delta: float):
|
||||
if absf(server_position.x - player.position.x) < 0.001 && absf(server_position.z - player.position.z) < 0.001:
|
||||
if absf(server_position.x - movement.physics_position.x) < 0.001 && absf(server_position.z - movement.physics_position.z) < 0.001:
|
||||
return
|
||||
|
||||
|
||||
var time := interpolation_speed * delta
|
||||
player.position.x = Math.dampf(player.position.x, server_position.x, time)
|
||||
player.position.z = Math.dampf(player.position.z, server_position.z, time)
|
||||
movement.physics_position.x = Math.dampf(movement.physics_position.x, server_position.x, time)
|
||||
movement.physics_position.z = Math.dampf(movement.physics_position.z, server_position.z, time)
|
Reference in New Issue
Block a user