How to change your character?

So I’m making a titan shift ability (pretty much turns them into a big angry giant) and my script works fine, it changes there character but it deletes your character and replaces it with a new one, I wanna make it so you turn into it, can control it and your original character is still there (for turning back) and I’ve found a way to make it so your inside of the titan but you can’t control it, any ideas of how to fix this?

Have you tried possibly cloning the original model of the character then placing that model in someplace like ServerStorage or something, then when the player wants to change back, grab the character that is equal to the clone in ServerStorage?

Keep in mind you can’t access ServerStorage from LocalScripts so you would have to put it in ReplicatedStorage, however then exploiters would most likely have access to those character models.

If this is all Server-Side, then just place the model in ServerStorage. Let me know if this works!

1 Like

I tried that but for some reason it says Attempted to index nil with parent when I did char:Clone() it set that to nil is there a solution around this?

Make sure you clone the character before you turn them into the titan. Like you said, if you turn them into the titan, the character will be deleted, which means you won’t be able to make a clone of it.

It would also be helpful to see your script.

It still says nil, heres my script:

local uis = game:GetService(“UserInputService”)

script.Parent.OnServerEvent:Connect(function(plr)-- if the remote event has been fired
local char = plr.Character – gets the character
local root = char.HumanoidRootPart-- gets the root part
local hum = char:FindFirstChild(“Humanoid”)
local effect = game.Lighting.EffectHolder:Clone()
local effect2 = game.Lighting.Titan2:Clone()
local blood = game.Lighting.Splash:Clone()
char.Humanoid.WalkSpeed = 0
local clone = char:Clone()
clone.Parent = game.Lighting
wait(1)
effect.Parent = workspace
effect.CFrame = root.CFrame
effect2.CFrame = root.CFrame
effect2.Parent = workspace
blood.Parent = workspace
blood.CFrame = root.CFrame * CFrame.new(0,1.5,-1)
wait(2)
blood:Remove()
effect:Remove()
effect2:Remove()
local titan = game.Lighting.Titan:Clone()
titan.Name = plr.Name
plr.Character = titan
titan.HumanoidRootPart.CFrame = char.HumanoidRootPart.CFrame * CFrame.new(0,30,0)
titan.Parent = workspace
workspace.CurrentCamera.CameraSubject = titan
script.Parent.Parent.Titan.Value = true
end)

Try cloning and parenting the character right after your initial character variable, and put a print statement after you clone it:
print(clone)

Also, instead of doing blood:Remove() replace the “Remove” with “Destroy” since Remove is deprecated.

Another thing I just read is that you should turn on the Archivable property so that you can make a clone. After you clone it, set the property to false.

If this is R15 (maybe R6 not sure) you can use HumanoidDescription | Roblox Creator Documentation and change the scale of the character. Super easy to do and will make a perfect giant character.

Here is an example: Shrinking/Changing Player Size with a Script - #5 by LEONJEMINAJ