Quick answer: Godot trail (Line2D or custom mesh) drawing a streak from the old position to the teleport destination? The trail doesn’t know about discontinuous moves — reset it on teleport.
Player respawns at a new location; their trail effect connects the dying spot to the spawn spot, producing a long ugly streak.
Clear Trail on Teleport
func teleport(pos):
position = pos
trail.clear_points()Drop the existing trail data. Next frames build fresh from the new position.
Track Last Position
Check distance between last and current position. If it exceeds a threshold (clearly teleport, not motion), reset.
Per-Point Lifetime
Trails with per-point lifetimes naturally fade out the old trail. Combined with clear, you get a clean visual cue: old trail vanishes, new trail builds.
Particle Trails
For GPUParticles3D / 2D, set the particle’s velocity to 0 or call restart on teleport. Same idea: discontinuous motion needs a reset.
Verifying
Teleports look intentional — no streak from origin to destination. Normal movement still produces flowing trails.
“Trails follow position. Teleport = clear the trail.”
Bundle teleport into a function that handles position + trail + camera adjustment together — one place to update all the dependents.