Quick answer: Unity Time.deltaTime reading 0 on the first frame of a new scene? Engine resets time counter at scene load - guard zero-delta in motion code or use Time.smoothDeltaTime.
Player teleports to scene boundary because position += velocity * deltaTime with deltaTime = 0 then suddenly = 0.5.
Guard zero delta
if (Time.deltaTime > 0) {
position += velocity * Time.deltaTime;
}Simple guard prevents the zero-then-spike pattern.
Or use smoothDeltaTime
smoothDeltaTime is the moving average; never zero after first frame.
Reset velocities on scene change
Listen for sceneLoaded; zero velocities. The teleport spike comes from a stale velocity meeting a fresh deltaTime.
“Scene-load frames are special. Engine code knows; gameplay code often doesn't.”
Establish a 'first frame' contract: gameplay code must tolerate zero deltaTime once per scene change. Documented; consistent.