Morphing player into different rig

i’m currently making a game where players get morphed into different rigs (that aren’t like the regular character ones), but here’s the problem, whenever i do this the animations are delayed due to them being played on the server, and if i play them on the client only that specific player getting morphed can see the animations

current method of morphing (server script):

local NewChar = game.Workspace.NPCs.NPC:Clone()
NewChar.Parent = workspace
NewChar.PrimaryPart.CFrame = Character.HumanoidRootPart.CFrame
Character:Destroy()
Player.Character = NewChar
--Animate script is already inside NewChar

is there another way of morphing from a player to a different rig?

i’m currently going to sleep so, i apologize if i take long to reply

2 Likes

You could use Humanoid:ApplyDescription

1 Like

how would i get the humanoiddescription of the model i’m trying to morph the player into?

You can do

local Model = game.Workspace.Model
local desc = Model.Humanoid:GetAppliedDescription()
game.Players.WHO.Character.Humanoid:LoadDescription(desc)

i’m getting the error: “Humanoid::ApplyDescription() DataModel was not available”
current script:

local Morph = game.Workspace.NPCs.MonsterFrog:Clone()
local Desc = Morph.Humanoid:GetAppliedDescription()
Character.Humanoid:ApplyDescription(Desc)

i have also tried with :LoadDescription() instead of :ApplyDescription but it gives the error: LoadDescription is not a valid member of Humanoid

It’s not working cause the clone is parented to nil. Parent it to something, maybe ReplicatedStorage, then apply the description and when you’re done with it destroy the clone.

i tried parenting it to Workspace but it still gives the same error, i also tried to remove the :Clone and get the description of the original model but that also didn’t work

Can I see your current code please?

local Morph = game.Workspace.NPCs.MonsterFrog:Clone()
Morph.Parent = workspace
local Desc = Morph.Humanoid:GetAppliedDescription()
Character.Humanoid:ApplyDescription(Desc)

Try adding a wait(.1) between the parenting and when getting the description.

1 Like

that removed the error, however i don’t think :ApplyDescription is the right thing in this case due to only my bodycolors changing to the model’s colors

You could possibly remove the bodycolors instance, or possibly re-color the rig.

the problem is that, i’m trying to morph the player into a non-player type rig

found a way to go about it:

local NewChar = game.Workspace.NPCs.MonsterFrog:Clone()
NewChar.PrimaryPart.CFrame = Character.HumanoidRootPart.CFrame
NewChar.Name = Character.Name
Player.Character = NewChar
NewChar.Parent = workspace
Animate:FireClient(Player, NewChar)
local Morph = game.ReplicatedStorage.RemoteEvents.Morph
local Player = game.Players.LocalPlayer

Morph.OnClientEvent:Connect(function(Char)
	Char.Animate:Destroy()
	Morph.Animate:Clone().Parent = Char
end)

to play the animations for the other players there is the Animate server script inside the model, and, to make it so the animations aren’t delayed for the player being morphed, i fire a RemoteEvent deleting the serverside Animate script and replacing it with a clientside Animate script.
thanks for the help!

1 Like