Trying to figure out why my teleportation code resulted in the player not being able to move. I wrote the following code:
func teleport_to(target: Node2D):
var level = target.get_parent()
# Move the entire rig
self.reparent(level)
self.global_position = target.global_position
# Move the player
player.position = Vector2.ZERO
if "required_facing" in target:
var spawn_facing = Types.flip_facing(target.required_facing)
player.stand(spawn_facing)
player.last_facing = spawn_facing
# Update the camera
camera.calculate_limits()
As it turns out, _physics_process
was no longer being called on the player. I’m not really sure why this is happening, but calling set_physics_process(true)
fixes the issue:
func teleport_to(target: Node2D):
# ...
# Move the player
player.position = Vector2.ZERO
set_physics_process(true)
# ...