How to scale r6 characters

I want to scale a character 2X, when I do char:ScaleTo(2) on characteradded, only the body parts scale not the accessories or meshes, and if I do on a 1 sec delay, the limbs intersect on client view, on server it’s fine

1 Like

You would have to initially remove all accessories and treat them as a separate mesh part and weld them to the player’s body parts. Only then can you scale it.

How would ik where to weld them

1 Like

All accessories have an instance known as “AccessoryWeld”. You can use it to figure it out. Just change it’s Part1 to the new mesh part of the accessory.

ok il try soon and mention any bugs

wait @iicloudsforeveriii so i gotta create new mesh parts for all accessory types?

You can do it on the server using AssetService:CreateMeshPartAsync. Something like:

local function ConvertAccessoryToMesh(Accessory:Accessory)
	local Handle = Accessory.Handle
	local Mesh = Handle:FindFirstChildOfClass("SpecialMesh")
	
	local MeshPart = game:GetService("AssetService"):CreateMeshPartAsync(Content.fromUri(Mesh.MeshId))
	MeshPart.Parent = Rig
	MeshPart.Position = Handle.Position
	MeshPart.CanCollide = false
	MeshPart.TextureID = Mesh.TextureId
	MeshPart.Name = Accessory.Name
	
	local Weld = Instance.new("Weld")
	Weld.Parent = MeshPart
	Weld.Part0 = MeshPart
	Weld.Part1 = Handle.AccessoryWeld.Part1
	Weld.C0 = Handle.AccessoryWeld.C0
	Weld.C1 = Handle.AccessoryWeld.C1
	
	Accessory:Destroy()
end

Simply pass the accessory as an argument, and the script will automatically make it a mesh part. Do ensure that the script is ran on the server and not the client as it will error out.

so when the character is added i scale teh character and put this on all accessories?

No.

local function ConvertAccessoryToMesh(Rig:Model,Accessory:Accessory)
	local Handle = Accessory.Handle
	local Mesh = Handle:FindFirstChildOfClass("SpecialMesh")
	
	local MeshPart = game:GetService("AssetService"):CreateMeshPartAsync(Content.fromUri(Mesh.MeshId))
	MeshPart.Parent = Rig
	MeshPart.Position = Handle.Position
	MeshPart.CanCollide = false
	MeshPart.TextureID = Mesh.TextureId
	MeshPart.Name = Accessory.Name
	
	local Weld = Instance.new("Weld")
	Weld.Parent = MeshPart
	Weld.Part0 = MeshPart
	Weld.Part1 = Handle.AccessoryWeld.Part1
	Weld.C0 = Handle.AccessoryWeld.C0
	Weld.C1 = Handle.AccessoryWeld.C1
	
	Accessory:Destroy()
end
Player.CharacterAppearanceLoaded:Wait()
for _,accessory in Character:GetChildren() do
	if not accessory:IsA("Accessory") then continue end
	ConvertAccessoryToMesh(Character,accessory)
end
Character:ScaleTo(2)
1 Like

um


i wrote in the 1st one if i delay it till the character loads the limbs intersect on client + the accessories are WAY too big

I checked the script myself and this doesn’t seem to happen at all. It’s most definitely that some other script is colliding with the current script.

Can you try the script on an empty baseplate?

ok

wait ur trying on r6 right making sure

Yes, I’m using it on R6.

ok i tried on a baseplate and its working

i think its my custom idle animation tweaking it

ok ive just disabled some of the local scripts in startercharacterscripts one of them is tweaking it, when disabled it works fine

Then that’s your answer.

I suggest marking my post as the solution as my script works fine.

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.