I would propose a bit of a change in logic
# SceneChange
extends Node
var target_tp: Vector2
var player_teleported: bool
func scene_transition(tp_position: Vector2) -> void:
target_tp = tp_position
player_teleported = true
get_tree().change_scene_to_file.bind("res://Scenes/a.tscn").call_deferred()
# frisk_home
extends Area2D
func _on_body_entered(body):
if body.name=="Frisk":
SceneChange.scene_transition(Vector2(168, 176))
# player script
func _ready():
if SceneChange.player_teleported:
position = SceneChange.target_tp
SceneChange.player_teleported = false
Does something like this work?