idk if this is what you meant but it fully reloads the scene and puts you at the origin-
extends Area3D
func _ready():
body_entered.connect(_on_body_entered)
func _on_body_entered(body: Node3D) -> void:
if body.name == "Player": #characterbody3d name
var current_scene_path = get_tree().current_scene.get_scene_file_path()
if current_scene_path != "":
call_deferred("_reload_scene", current_scene_path)
func _reload_scene(scene_path: String) -> void:
get_tree().change_scene_to_file(scene_path)