This tutorial will certainly be walk over exactly how to properly develop an R15 morph rig the is able to be used in conjunction v an R15 auto-morph script. This accuse is expected for individuals who great to effectively use functioning auto-morphs in your genres or game.

You are watching: How to make a roblox morph

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

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

Screenshot_9.png156×620 6.28 KB

You have actually successfully collection up one 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 room a plethora of methods to design your auto-morph script, but I use a compact and straightforward one that will work-related for you.

To begin setup up your auto-morph script, walk to ServerStorage, make a new folder and name that “Morphs”. Now inside the morphs folder you’ll want to make another folder and name it whatever you’d like, however I personally surname mine the name of the video game I’m functioning on. Inside of the folder you’ll want to make one more folder and name the “PersonalMorphs” all of the shape you’ll desire to use v the auto-morph script will go inside of the PersonalMorphs folder. If you acquired a morph you want to use, climate make one more folder inside of the PersonalMorphs folder and name it every little thing you like. Ns personally surname mine the surname of the character my morph is. It’s less complicated to find them if you have actually a the majority of them in there.Select every one of those (not the fake itself) then copy and also paste them into your folder the you named.

Now let’s move onto the script I have produced that friend can create yourself v these photos. Begin by going into ServerScriptService and making a script. Name that manuscript “Morph”. Currently open the manuscript up, delete “print(“Hello world!”)” and also we shall start constructing it.

local players = game:GetService("Players")local morphs = game:GetService("ServerStorage"):WaitForChild("Morphs") -- Looks because that the "Morph" folder you"ve produced 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" climate -- The "Coat" and also "Pauld" statements can be totally ignored or removed 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 check == "Pauld" thenif plr:FindFirstChild("Pauld") == nil thenlocal Folder ="Folder")Folder.Name = "Pauld"Folder.Parent = plrendendlocal Folder = (test == "Morph" and plr:FindFirstChild("Morph") or test == "Coat" and also plr:FindFirstChild("Coat") or check == "Add" and also plr:FindFirstChild("Add") or test == "Pauld" and 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" then h.Anchored = falseh.CanCollide = falseendendendendendlocal duty RunThings(char,Model, test)pcall(function()if Model:findFirstChild("Head") thenmorph(char, "Head", Model, "Head",test)endif Model:findFirstChild("UpperTorso") climate -- Looks for the body part models inserted inside the the called folder girlfriend 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 role MorphUser(User,Team,Class,Morph,name)local MorphRoot = Morphs:WaitForChild(Morph)local version = MorphRoot:Clone()local char = User.CharacterRunThings(char,Model,name)endlocal function Body(depth,height,width,Char)for _,v in pairs(Char.Humanoid:GetChildren()) doif v.ClassName == "NumberValue" thenif v.Name == "BodyDepthScale" climate -- watch for any type of changes made to the depth, height and width variables.v.Value = depthelseif v.Name == "BodyHeightScale" thenv.Value = heightelseif v.Name == "BodyWidthScale" thenv.Value = widthendendendendlocal duty Finale(Char)for i,v in pairs(Char:GetChildren()) doif v:IsA("Accessory") or v:IsA("Hat") thenv:Destroy()endendendlocal function 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") then v.face:remove()endendendendlocal duty Finale1(Char)for i,v in pairs(Char:GetChildren()) doif v.ClassName == "MeshPart" or v.ClassName == "Part" thenv.Transparency = 1if v:FindFirstChild("face") then v.face:remove()endendendendlocal function 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()) carry out if v.ClassName == "NumberValue" then if v.Name == "HeadScale" climate v.Value = head finish end endendPlayers.PlayerAdded:connect(function(Player)Player.CharacterAdded:connect(function(Character)wait(2)visible = falseif Player.Name == "PLAYER NAME" climate -- transforming these variables change the morph functions 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 change CalvinKadir v your very own username or somebody else’s username. Friend can conveniently replace that line completely with a team or group rank statement for this reason that certain groups or team ranks will get the morph instead.

if Player:GetRankInGroup(5025607) == 255

^ that line of code is an instance of what you have the right to replace the name statement with.

You can additionally entirely remove the Body(1,1,1,Character) declare if you don’t ever setup on changing the height, width and depth of her morph. Do keep in mind the by transforming those values, you’ll have to likewise properly scale the morph design itself, or you’ll end up spawning in v your eight or legs floating far from your torso. Ns will explain how to do that in a future progressed tutorial.

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

Basically the Finale statements room there to determine which component of the morph is visible and which part isn’t. This is useful at times. To speak you desire to do a morph, but you don’t desire to do a tradition head, girlfriend can change the Finale statement to make the head ~ above the morph invisible so that you have the right to spawn in through the practice body, yet still have your own face, accessories and head. Or you have the right to just make it whereby you have your head and also face, yet not any type of accessories.

Finale, Finale1, Finale2 and Finale3 are all the species of Finale explanation you have the right to switch between. This won’t mess up the script any, so simply experiment and also choose which one you’d like. Notice that I have two Finales in the password below. One Finale to add onto or negates the effect of the various other Finale. It’s constantly a great idea to keep the Finale(Character) on there, however it have the right to be switched for different effects choose I described above.

if Player.Name == ‘CalvinKadir’ climate – whole 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 to elseif ~ above the 2nd one and also beyond.

Once you have thoroughly completed each of the procedures above, the facility part is out of the way. Once you sign up with the video game via check or server, you will generate in as the morph you placed within the named folder friend created. You’ll proceed to generate in together this morph until you change it within Studio.

This setup is specifically useful because that roleplaying genres, such as a Star wars or game of Thrones genre. Through the rig functioning, girlfriend can start building and also shaping that into every little thing character or human you’d like. Because that example, me and also my girlfriend have built some Dishonored morphs, and many others. Your morph will go as much as her creativity.


When you’re building your morph, be certain to placed the components you’re adding into the correct body component model. So if you’re building something on the top left arm, you’d place those parts within the LeftUpperArm model.

I’d recommend not permitting one component to extend to an additional body part. If you’re building something on the upper arm, the shouldn’t prolong down come the reduced arm. It’ll look at a little odd in-game. You can still do it, and also I usually build from the torso ~ above the shoulders of each arm all the time. But locations such together the arms can look a little off.

See more: Object Reference Not Set To An Instance Of An Object Nmm, Install Error In Nmm : Skyrimmods

If girlfriend have any other questions, please toss me a PM. Okay get back with friend as quickly as ns can.