I don't know if this is the best way to do it, but in my game, I have a special area object that I position where the teleport should be. If the player touches it, then they get moved to a new set of coordinates into the new level. I only have teleports for the horizontal and vertical directions where the y coordinates in the horizontal direction depend on the position the teleport links to and the player's current offset from the current teleport. If you do it this way, then your layout has to make sense, and the teleports that connect those two levels should be the same height. The x coordinate will just be the one you want the player to teleport to. Same with the vertical one, but you swap the x and y coordinates.I have my game set up a bit like minilens where the player is in a separate container from the level and tilemaps so that they can be swapped without losing player state. But I find the physics server lags a bit, and if you use the move function, it will try to calculate the collisions in between. I used call_deferred to move the player to the correct location after the new level loads completely. If you're dynamically loading levels at run time, it might also be desirable to do some background loading. If you don't want any collisions to be calculated while the level is loading, you'll also have to pause your processes before the background loading and unpause it afterwards.