The character is moved after CharacterAdded is fired

CharacterAdded is fired and then afterwards, Roblox decides where to place the character, disregarding any placement that has already been decided by the developer. Here’s a simple script that won’t have the results you would expect

game.Players.PlayerAdded:Connect(function(player)
	player.CharacterAdded:Connect(function(character)
		character.HumanoidRootPart.CFrame = CFrame.new(256, 10, 256)
	end)
end)

The workaround is to add a small pause before doing anything to the character, which shouldn’t be necessary.

4 Likes

The easy solution to this is to have LoadCharacter include a position parameter and then we can practically use CharacterAutoLoads to create a real custom spawn system rather than relying on idiosyncrasies to bypass these sorts of behaviours.

1 Like

I would argue for CreateCharacter over a position argument – that way we still have full control over position, but can also prepare the character (with armor, weapons, etc) before spawning them into the world.

4 Likes