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.