I’ve had this issue a while back as well. The solution should be adding a wait time (recommended 3-8 seconds) before moving the player.
.CharacterAdded fires when the playermodel is added into the workspace, not when the playermodel’s parts are all in. You can also try a p:WaitForChild("HumanoidRootPart") but I doubt it will work.
This has never happened to me, it could be that there’s a part there. Forcing the player to go to the top of that part. Also is the camera being manipulated? Try @OsanaRumia 's suggestion too. I had just realized it was .Position.