This tutorial will certainly be going over how to properly create an R15 morph rig the is able to be supplied in conjunction through an R15 auto-morph script. This accuse is intended for users who great to effectively use functioning auto-morphs in their genres or game.

You are watching: How to make a morph in roblox

To begin setup up your rig, you’ll need to obtain a default one first. The easiest means of obtaining one is to click the “Plugins” tab, click on “Rig Builder”, make certain it’s collection to R15 and also then click on the “Block Rig” option.

You’ll then desire to open up the dummy model up in Workspace to see this.
Delete every one of that because that each one. Do not delete the mesh inside of the Head though! You’ll also want to open up up the yes, really mesh inside of the Head and delete the OriginalSize value.
Now you’ll want to rename each of the MeshParts within of the models come “Middle” (without the quotations).

Screenshot_9.png156×620 6.28 KB

You have actually successfully set up an R15 morph rig that is prepared to be offered with one auto-morph script. Auto-morph scripts generate you in as the morph of her choosing. There are a plethora of means to design your auto-morph script, however I usage a compact and straightforward one the will work for you.

To begin setup up your auto-morph script, go to ServerStorage, make a new folder and name the “Morphs”. Currently inside the shape folder you’ll want to make one more folder and also name it every little thing you’d like, yet I personally name mine the name of the video game I’m working on. Inside of the folder you’ll desire to make another folder and also name the “PersonalMorphs” every one of the morphs you’ll desire to use through the auto-morph manuscript will go inside of the PersonalMorphs folder. If you got a morph you want to use, then make another folder within of the PersonalMorphs folder and also name it whatever you like. I personally surname mine the surname of the personality my morph is. It’s much easier to find them if you have actually a lot of them in there.Select all of those (not the dummy itself) climate copy and paste them right into your folder the you named.

Now let’s relocate onto the script I have created that you can develop yourself v these photos. Begin by going right into ServerScriptService and also making a script. Surname that manuscript “Morph”. Now open the script up, delete “print(“Hello world!”)” and also we shall start constructing it.

local players = game:GetService("Players")local form = game:GetService("ServerStorage"):WaitForChild("Morphs") -- Looks because that the "Morph" folder you"ve created earlier.local clearly shows = falselocal recol = ""function morph(plr, part, location, model, test)if plr ~= nil thenif test == "Morph" thenif plr:FindFirstChild("Morph") == nil thenlocal Folder ="Folder")Folder.Name = "Morph"Folder.Parent = plrendelseif test == "Coat" then -- The "Coat" and "Pauld" statements can be totally ignored or eliminated without harming the script.if plr:FindFirstChild("Coat") == nil thenlocal Folder ="Folder")Folder.Name = "Coat"Folder.Parent = plrendelseif check == "Add" thenif plr:FindFirstChild("Add") == nil thenlocal Folder ="Folder")Folder.Name = "Add"Folder.Parent = plrendelseif test == "Pauld" thenif plr:FindFirstChild("Pauld") == nil thenlocal Folder ="Folder")Folder.Name = "Pauld"Folder.Parent = plrendendlocal Folder = (test == "Morph" and also plr:FindFirstChild("Morph") or check == "Coat" and plr:FindFirstChild("Coat") or check == "Add" and plr:FindFirstChild("Add") or test == "Pauld" and also plr:FindFirstChild("Pauld"))if Folder:FindFirstChild(model) == nil thenlocal g = location:Clone()g.Parent = Folderfor i, v in ipairs(g:GetChildren()) doif v:IsA("BasePart") thenlocal W ="Weld")W.Part0 = g.MiddleW.Part1 = vlocal CJ = C0 = g.Middle.CFrame:inverse() * CJlocal C1 = v.CFrame:inverse() * CJW.C0 = C0W.C1 = C1W.Parent = g.Middleendlocal Y ="Weld")Y.Part0 = plr:FindFirstChild(part)Y.Part1 = g.MiddleY.C0 =, 0, 0)Y.Parent = Y.Part0endlocal h = g:GetChildren()for i = 1, # h doif h.className == "Part" or h.className == "UnionOperation" or h.className == "MeshPart" or h.className == "WedgePart" climate h.Anchored = falseh.CanCollide = falseendendendendendlocal role RunThings(char,Model, test)pcall(function()if Model:findFirstChild("Head") thenmorph(char, "Head", Model, "Head",test)endif Model:findFirstChild("UpperTorso") then -- Looks for the body part models placed inside of the called folder you made.morph(char, "UpperTorso", Model, "UpperTorso",test)endif Model:findFirstChild("LowerTorso") thenmorph(char, "LowerTorso", Model, "LowerTorso",test)endif Model:findFirstChild("LeftUpperArm") thenmorph(char, "LeftUpperArm", Model, "LeftUpperArm",test)endif Model:findFirstChild("RightUpperArm") thenmorph(char, "RightUpperArm", Model, "RightUpperArm",test)endif Model:findFirstChild("LeftLowerArm") thenmorph(char, "LeftLowerArm", Model, "LeftLowerArm",test)endif Model:findFirstChild("RightLowerArm") thenmorph(char, "RightLowerArm", Model, "RightLowerArm",test)endif Model:findFirstChild("LeftHand") thenmorph(char, "LeftHand", Model, "LeftHand",test)endif Model:findFirstChild("RightHand") thenmorph(char, "RightHand", Model, "RightHand",test)endif Model:findFirstChild("LeftUpperLeg") thenmorph(char, "LeftUpperLeg", Model, "LeftUpperLeg",test)endif Model:findFirstChild("RightUpperLeg") thenmorph(char, "RightUpperLeg", Model, "RightUpperLeg",test)endif Model:findFirstChild("LeftLowerLeg") thenmorph(char, "LeftLowerLeg", Model, "LeftLowerLeg",test)endif Model:findFirstChild("RightLowerLeg") thenmorph(char, "RightLowerLeg", Model, "RightLowerLeg",test)endif Model:findFirstChild("LeftFoot") thenmorph(char, "LeftFoot", Model, "LeftFoot",test)endif Model:findFirstChild("RightFoot") thenmorph(char, "RightFoot", Model, "RightFoot",test)endend)endlocal duty MorphUser(User,Team,Class,Morph,name)local MorphRoot = Morphs:WaitForChild(Morph)local version = MorphRoot:Clone()local char = User.CharacterRunThings(char,Model,name)endlocal role Body(depth,height,width,Char)for _,v in pairs(Char.Humanoid:GetChildren()) doif v.ClassName == "NumberValue" thenif v.Name == "BodyDepthScale" then -- look at for any type of changes made come the depth, height and also width variables.v.Value = depthelseif v.Name == "BodyHeightScale" thenv.Value = heightelseif v.Name == "BodyWidthScale" thenv.Value = widthendendendendlocal function Finale(Char)for i,v in pairs(Char:GetChildren()) doif v:IsA("Accessory") or v:IsA("Hat") thenv:Destroy()endendendlocal duty Finale0(Char)for i,v in pairs(Char:GetChildren()) doif v.ClassName == "MeshPart" or v.ClassName == "n/a" thenv.Transparency = 1if v:FindFirstChild("n/a") climate v.face:remove()endendendendlocal role Finale1(Char)for i,v in pairs(Char:GetChildren()) doif v.ClassName == "MeshPart" or v.ClassName == "Part" thenv.Transparency = 1if v:FindFirstChild("face") climate v.face:remove()endendendendlocal role Finale2(Char)for i,v in pairs(Char:GetChildren()) doif v.ClassName == "MeshPart" or v.ClassName == "Part" and v.Name ~= "Head" or v.Name ~= "LeftHand" or v.Name ~= "RightHand" thenv.Transparency = 1endendendlocal role Head(head,Char) because that _,v in pairs(Char.Humanoid:GetChildren()) do if v.ClassName == "NumberValue" climate if v.Name == "HeadScale" climate v.Value = head end end endendPlayers.PlayerAdded:connect(function(Player)Player.CharacterAdded:connect(function(Character)wait(2)visible = falseif Player.Name == "PLAYER NAME" then -- an altering these variables alter the morph attributes entirely.Body(1,1,1,Character)MorphUser(Player,"MAP NAME","PersonalMorphs","MORPH NAME","Morph")Finale(Character)Finale1(Character)endend)end)In the if Player.Name == ‘CalvinKadir’ statement, you’ll desire to replace CalvinKadir through your own username or somebody else’s username. You can conveniently replace the line entirely with a group or group rank statement therefore that specific groups or group ranks will get the morph instead.

if Player:GetRankInGroup(5025607) == 255

^ that line of code is an instance of what you can replace the surname statement with.

You can additionally entirely eliminate the Body(1,1,1,Character) statement if you nothing ever plan on changing the height, width and depth of her morph. Do keep in mind that by changing those values, you’ll have actually to additionally properly range the morph design itself, or you’ll end up spawning in through your arms or legs floating far from her torso. Ns will describe how to perform that in a future progressed tutorial.

On line 190 is whereby the folders you’ve created previously in ServerStorage come in.MorphUser(Player,“The Void”,“PersonalMorphs”,“CalvinKadir”,“Morph”) must be changed to the name of the folders you have created. “The Void” would certainly be changed and “CalvinKadir” would be changed. The rest need to stay the same.

Basically the Finale statements room there to identify which component of the morph is visible and also which part isn’t. This is beneficial at times. Say you desire to do a morph, but you don’t desire to make a custom head, you can adjust the Finale statement to make the head on the morph invisible so that you can spawn in with the tradition body, but still have your very own face, accessories and also head. Or you can just do it wherein you have actually your head and also face, yet not any kind of accessories.

Finale, Finale1, Finale2 and Finale3 space all the types of Finale explanation you deserve to switch between. This won’t chaos up the script any, so just experiment and also choose i m sorry one you’d like. Notification that I have actually two Finales in the password below. One Finale add to onto or negates the impact of the other Finale. It’s always a great idea to keep the Finale(Character) on there, yet it deserve to be switched for different effects favor I described above.

if Player.Name == ‘CalvinKadir’ then – entire section is changeable.Body(1,1,1,Character)MorphUser(Player,“The Void”,“PersonalMorphs”,“CalvinKadir”,“Morph”)Finale(Character)Finale1(Character)

if Player.Name == ‘’ thenBody(1,1,1,Character)MorphUser(Player,“Map Name”,“PersonalMorphs”,“Morph Name”,“Morph”)Finale(Character)Finale1(Character)

Be sure to adjust if come elseif top top the second one and also beyond.

Once you have thoroughly completed every of the actions above, the complex part is out of the way. Once you join the game via test or server, friend will generate in as the morph you inserted within the named folder you created. You’ll continue to spawn in together this morph until you change it within Studio.

This setup is specifically useful because that roleplaying genres, such together a Star battles or game of Thrones genre. With the rig functioning, friend can begin building and also shaping that into every little thing character or person you’d like. Because that example, me and my friend have developed some Dishonored morphs, as well as many others. Your morph will certainly go as much as her creativity.


When you’re structure your morph, be certain to placed the components you’re adding into the correct body part model. Therefore if you’re structure something top top the upper left arm, you’d location those parts within the LeftUpperArm model.

I’d introduce not enabling one component to expand to an additional body part. If you’re building something on the upper arm, that shouldn’t prolong down to the reduced arm. It’ll look at a little bit odd in-game. You can still carry out it, and I usually construct from the torso top top the shoulders the each eight all the time. But areas such together the arms can look a little bit off.

See more: Classic Auctions 201 S. Central Ave. Locust, Nc, Classic Auctions

If you have any other questions, you re welcome toss me a PM. I’ll get back with you as quickly as i can.