MORPHING - How to morph a player back to their original character/avatar

You can write your topic however you want, but you need to answer these questions:

  1. What do you want to achieve? I want a player to be able to morph back when they morphed

  2. What is the issue? My game is in first-person, when a morphed player morphs back to their original character, their hair and body can be seen by themselves (In the video)

  3. What solutions have you tried so far? I tried searching on many platforms but can’t see a solution

The Video

This is my script. It clones the player’s avatar and puts it in the replicated storage, then if the player wants to morph back, it will get the player’s avatar and morph

local newBody = game.ServerStorage:FindFirstChild('Hi'):Clone()
	    newBody.Name = callingPlayer.Name
	    newBody.Parent = game.Workspace
		newBody:SetPrimaryPartCFrame(callingPlayer.Character.PrimaryPart.CFrame)
		
		callingPlayer.Character.Archivable = true
		local oldBody = callingPlayer.Character:Clone()
		oldBody.Parent = ReplicatedStorage
		callingPlayer.Character.Archivable = false
		
	    callingPlayer.Character = newBody
		local camera = workspace.CurrentCamera
local oldBody = ReplicatedStorage:FindFirstChild(callingPlayer.Name)
		oldBody.Parent = game.Workspace
		oldBody:SetPrimaryPartCFrame(callingPlayer.Character.PrimaryPart.CFrame)
		
		callingPlayer.Character = oldBody
		local camera = workspace.CurrentCamera

This is like my 3rd problem in this morph system xD, Thanks for helping

2 Likes

I think you can also just use the Player:LoadCharacter() built-in function, which automatically resets the player’s camera and character.

1 Like

A practical solution would be Players:GetHumanoidDescriptionFromUserId and Humanoid:ApplyDescription

Hi, thanks for this, but it leads to the same problem.

Thanks, but I can’t figure out how to use it xD, I will try searching first

2 Likes

Bump, still can’t figure it out

this is how to use Players:GetHumanoidDescriptionFromUserId and Humanoid:ApplyDescription

local function RestorPlayer(player)
    local description = game.Players:GetHumanoidDescriptionFromUserId(player.UserId)
    player.Character.Humanoid:ApplyDescription(description)
end

Oh! Thanks for this.
Sadly, it doesn’t work in my morph, because I think my morph has “non-avatar” feature(?). But still, surely I can use this on the future.

This is the morph
image

would it be possible to do?

local characterModel = player.Character

-- change character to morph model
player.Character = workspace.Morph

task.wait(10)

-- change player back to there original model
player.Character = characterModel
2 Likes

Hi! Thank you so much for your help, but this doesn’t work aswell. I am thinking of just changing the system.
Thanks!

So I think, it is just better if I make that the Morphed player will just reset character when they want to gain back their original avatar and they will respawn on the same place where they die