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
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
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)
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.
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.