The only thing I can think of is that the player start is on another spot from the one you need it to be. Maybe someone more experienced than me can provide a better answer, but I would say move the player start, instead of the whole map. Seems simpler, since the checkpoint on the beginning of the map didn’t work (that was my solution on a similar problem that I had)
What I have seen is that if a character spawns too low they can fall through the floor. Like the last post said you could just grab the player start and adjust it up a bit in the Z. IF it keeps falling? Then for some reason your capsule component is not blocking.
Unreal has a great gravity and blocking system, but the thing is, it locks you into using the character bps with the capsule component that is tied to the CMC. But if you want to do something simple like say a defeated enemy drops a health or other item, and it falls down to the next blocking surface (lets say Castlevania 1 or Megaman 1 on the NES for example). You can’t use a character bp for that as if it is not possessed it won’t fall or use that gravity.
It was confusing until I started really thinking of it like the base three types of bps you could use for something. 1. Characters, possessed by player controllers built in cmc and the cc,2.Pawns can be possessed. but you can move them manually with add actor world offsets or set actor locations. 3.Actors (usually ideal for projectiles and camera actor bps).
But here is the thing, there seems to be drawbacks and benefits for them all. For example, a character can use launch character and you can fairly easily simulate a jump or knock back, however, you are locked into that system, whereas, a pawn you can easily move it any direction you want, but you have to simulate gravity.
A few common causes and fixes for this in Unreal:
1. Spawning before the level is ready
If you’re spawning the player manually (instead of using PlayerStart), the character might be created before the floor collision is loaded.
Fix: Delay the spawn slightly (even 0.1–0.3 seconds) or move your spawn logic to BeginPlay of a manager that runs after the level is fully loaded.
2. Wrong spawn timing (GameMode vs Level Blueprint)
If the GameMode is spawning the character immediately, but your checkpoint system updates position right after, you can get that “fall then snap” behavior.
Fix: Override the default spawn and directly spawn the player at the saved checkpoint location instead of spawning twice.
3. Collision not initialized yet
Sometimes the mesh/floor collision isn’t ready on the first frame.
Fix: Ensure your floor has proper collision enabled (BlockAll or at least blocks Pawn), and try enabling “Always Loaded” if using level streaming.
4. Character starts slightly below floor
If your checkpoint transform is slightly below the ground, gravity will pull the character down instantly.
Fix: Add a small Z offset (e.g. +50 to +100 units) to your spawn location.
5. Physics / Movement component initializing late
CharacterMovementComponent may not be fully initialized on spawn.
Fix: Temporarily disable movement or gravity until after positioning is finalized, then re-enable it.
Recommended clean solution
Instead of letting the engine spawn the default pawn and then moving it:
-
Disable auto spawn in GameMode
-
Manually spawn your character once at the checkpoint location
-
Set the transform BEFORE enabling movement/gravity
This avoids the “double spawn” effect you’re seeing.