When the player becomes the model they can move but they are stuck in the default pose local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MorphEvent = ReplicatedStorage:WaitForChild("MorphEvent")
local CameraFixEvent = ReplicatedStorage:WaitForChild("CameraEvent")
local Characters = ReplicatedStorage:WaitForChild("Characters")
local function findMorph(name)
for _, model in ipairs(Characters:GetDescendants()) do
if model:IsA("Model") and model.Name == name then
return model
end
end
return nil
end
local function morphPlayer(player, morphName)
local oldChar = player.Character
if not oldChar or not oldChar:FindFirstChild("HumanoidRootPart") then return end
local position = oldChar.HumanoidRootPart.Position
oldChar:Destroy()
local morphModel = findMorph(morphName)
if not morphModel then
warn("Morph not found: " .. morphName)
return
end
local clone = morphModel:Clone()
clone.Name = player.Name
clone.Parent = workspace
clone:PivotTo(CFrame.new(position))
player.Character = clone
local humanoid = clone:FindFirstChildWhichIsA("Humanoid")
if humanoid then
CameraFixEvent:FireClient(player, humanoid)
end
end
MorphEvent.OnServerEvent:Connect(function(player, morphName)
morphPlayer(player, morphName)
end)