Looks like there’s a solution on Reddit, and a linked ongoing github issues discusison on making this easier/part of the engine. As a 60hz monitor nerd I am surprised there isn’t a good default for this, VR toolkit just recommends increasing the physics ticks to 144
var old_position: Vector3
func _physics_process(_delta: float) -> void:
old_position = position
handle_movement_and_stuff()
func _process(_delta: float) -> void:
var t := Engine.get_physics_interpolation_fraction()
sprite.position = old_position.lerp(position, t)