Easier way to create custom characters

  1. What do you want to achieve? Keep it simple and clear!
    An easier way to create a rig as in replacing default body parts with custom parts.
  2. What is the issue? Include screenshots / videos if possible!
    I am making a character design using custom parts that are welded inside the character. It works but there are too many blocks in character. How do I replace the default body parts with custom ones.
  3. What solutions have you tried so far? Did you look for solutions on the Developer Hub?

local Player = game.Players.LocalPlayer

local rightfoot = game.ReplicatedStorage.FootChar:Clone()
local rightupperleg = game.ReplicatedStorage.UpperLegChar:Clone()
local rightlowerleg = game.ReplicatedStorage.LowerLegChar:Clone()

local leftfoot = game.ReplicatedStorage.FootChar:Clone()
local leftupperleg = game.ReplicatedStorage.UpperLegChar:Clone()
local leftlowerleg = game.ReplicatedStorage.LowerLegChar:Clone()

local uppertorso = game.ReplicatedStorage.UpTorso:Clone()
local lowertorso = game.ReplicatedStorage.LowTorso:Clone()

local head = game.ReplicatedStorage.HeadChar:Clone()

local weldConRightFoot = Instance.new("WeldConstraint")
local weldConRightUpperLeg = Instance.new("WeldConstraint")
local weldConRightLowerLeg = Instance.new("WeldConstraint")

local weldConLeftFoot = Instance.new("WeldConstraint")
local weldConLeftUpperLeg = Instance.new("WeldConstraint")
local weldConLeftLowerLeg = Instance.new("WeldConstraint")

local weldConUpTorso = Instance.new("WeldConstraint")
local weldConLowTorso = Instance.new("WeldConstraint")

local weldConHead = Instance.new("WeldConstraint")
--Set Parents
rightfoot.Parent = Player.Character
rightupperleg.Parent = Player.Character
rightlowerleg.Parent = Player.Character

leftfoot.Parent = Player.Character
leftupperleg.Parent = Player.Character
leftlowerleg.Parent = Player.Character

uppertorso.Parent = Player.Character
lowertorso.Parent = Player.Character

head.Parent = Player.Character
--Right leg
weldConRightFoot.Parent = rightfoot
weldConRightUpperLeg.Parent = rightupperleg
weldConRightLowerLeg.Parent = rightlowerleg

weldConRightFoot.Part0 = rightfoot
weldConRightUpperLeg.Part0 = rightupperleg
weldConRightLowerLeg.Part0 = rightlowerleg

weldConRightFoot.Part1 = Player.Character.RightFoot
weldConRightUpperLeg.Part1 = Player.Character.RightUpperLeg
weldConRightLowerLeg.Part1 = Player.Character.RightLowerLeg
--Left leg
weldConLeftFoot.Parent = leftfoot
weldConLeftUpperLeg.Parent = leftupperleg
weldConLeftLowerLeg.Parent = leftlowerleg

weldConLeftFoot.Part0 = leftfoot
weldConLeftUpperLeg.Part0 = leftupperleg
weldConLeftLowerLeg.Part0 = leftlowerleg

weldConLeftFoot.Part1 = Player.Character.LeftFoot
weldConLeftUpperLeg.Part1 = Player.Character.LeftUpperLeg
weldConLeftLowerLeg.Part1 = Player.Character.LeftLowerLeg
weldConUpTorso.Parent = uppertorso
weldConLowTorso.Parent = lowertorso

weldConUpTorso.Part0 = uppertorso
weldConLowTorso.Part0 = lowertorso

weldConUpTorso.Part1 = Player.Character.UpperTorso
weldConLowTorso.Part1 = Player.Character.LowerTorso

weldConHead.Parent = head

weldConHead.Part0 = head

weldConHead.Part1 = Player.Character.Head
--Position and Orientation
--Right leg
rightfoot.Position = Player.Character.RightFoot.Position
rightfoot.Orientation = Player.Character.RightFoot.Orientation

rightupperleg.Position = Player.Character.RightUpperLeg.Position
rightupperleg.Orientation = Player.Character.RightUpperLeg.Orientation

rightlowerleg.Position = Player.Character.RightLowerLeg.Position
rightlowerleg.Orientation = Player.Character.RightLowerLeg.Orientation
--Left leg
leftfoot.Position = Player.Character.LeftFoot.Position
leftfoot.Orientation = Player.Character.LeftFoot.Orientation

leftupperleg.Position = Player.Character.LeftUpperLeg.Position
leftupperleg.Orientation = Player.Character.LeftUpperLeg.Orientation

leftlowerleg.Position = Player.Character.LeftLowerLeg.Position
leftlowerleg.Orientation = Player.Character.LeftLowerLeg.Orientation
uppertorso.Position = Player.Character.UpperTorso.Position
uppertorso.Orientation = Player.Character.UpperTorso.Orientation

lowertorso.Position = Player.Character.LowerTorso.Position
lowertorso.Orientation = Player.Character.LowerTorso.Orientation
head.Position = Player.Character.Head.Position
head.Orientation = Player.Character.Head.Orientation
--Right Leg
Player.Character.RightFoot.Transparency = 1
Player.Character.RightUpperLeg.Transparency = 1
Player.Character.RightLowerLeg.Transparency = 1
--Left Leg
Player.Character.LeftFoot.Transparency = 1
Player.Character.LeftUpperLeg.Transparency = 1
Player.Character.LeftLowerLeg.Transparency = 1
Player.Character.UpperTorso.Transparency = 1
Player.Character.LowerTorso.Transparency = 1
Player.Character.Head.Transparency = 1
``` As you can see, it clones parts from replicated storage and welds the parts to their corresponding body part.

Hi. You could insert the custom character as a Model named “StarterCharacter” inside StarterPlayer service. This will automatically replace the whole default character with the model you created, so there will be less lag!


I was wondering about this too. Would you have to label the arms as “LeftArm” and “RightArm”

1 Like

Yeah, what would you named the parts. Also, how would it know if it was R6 or R15



Didn’t work as expected

1 Like

Try anchoring them? I really don’t know.

1 Like

Un-anchor all your parts in the character model. Set canCollide to false. Weld all parts (limbs, etc) to the character’s HumanoidRootPart.


When you mean by weld, do you mean Weld or WeldConstraint?

1 Like

I use Welds. WeldConstraints are identical.

1 Like

I used WeldConstraints, un-anchored all the parts, canCollide to false and got this

Everything is stuck in the HumanoidRootPart

1 Like

Instead of welds, it might be better to use Motor6Ds. You can edit the C0 and C1 of each limb to fit your needs.


This was mentioned as literally the first post. Rig in StarterPlayer isn’t enough, also has to be named StarterCharacter.

O, I didn’t see that thanks for telling me. Yeah, I meant starterCharacter.

1 Like