Don't change their Starter Character when the script is run. What you want to do is clone the model, move it to where you want.
Then, set the player's character's Archivable to true. Set Player.Character = clonedModel;
, and delete their old character.
It would look something like this:
1 | local model = game.ReplicatedStorage.Model; |
2 | local c = Player.Character; |
3 | local newModel = model:Clone(); |
4 | newModel:SetPrimaryPartCFrame(CFrame.new()); |
6 | Player.Character = newModel; |
You'd also set workspace.CurrentCamera.CameraSubject equal to the newModel clone. You can do this by firing a Remote Event/Function to the Client.