How Can I Shrink A Player?

How can I shrink a player so that they become tiny compared to everything else? I tried using this

	for i, part in pairs(player.Character:GetChildren()) do 
					part.Size = part.Size + Vector3.new(-1, -1, -1)
			end

but the end result looks very ugly and unappealing
image
Does anybody know a way where I can shrink down the player while keeping everything in the right proportions?

1 Like

As far as I’m aware, there are 2* relatively straight-forward ways of making that possible.


Option 1 (Not released as of March, 2023)*

It was recently announced that we’ll soon be able to scale models via Scripts by using :ScaleTo(Number) on a Model, like so:

local ScaleFactor = 2 -- This would make the model twice its current size
Model:ScaleTo(ScaleFactor)

---

local ScaleFactor = 0.5 -- This would make the model half its current size
Model:ScaleTo(ScaleFactor)

Based on the feature’s announcement thread, there will be support for Character models so it seems like that will become the easiest way of achieving that in real-time for Character models of any type (R6, R15, Rthro, etc.)

As of writing this post, it’s currently in Beta so you could opt-into it in Roblox Studio via File → Beta Features → Check the box for “Scale Factor for Models” if you’d like to start using it but keep in mind that it wouldn’t work in live games until the feature has been released.


Option #2 (Not supported for R6 Characters, unfortunately)

For R15 Character models, there are several objects contained within the Humanoid (example shown in the screenshot below) that make it possible to update specific scale values of the Character (based on the same options that are provided in the Avatar customization page on the Roblox site).

R15 Character Example

Updating those via scripts would involve selecting the correct Character model, then the Humanoid, and then the specific object you want to update. Here’s an example:

local Players = game:GetService("Players")

Players.PlayerAdded:Connect(function(player)
	player.CharacterAppearanceLoaded:Connect(function(Character) -- We're using "CharacterAppearanceLoaded" instead of CharacterAdded here to make sure that the entire Character model is there before the values are updated
		local Humanoid = Character:WaitForChild("Humanoid")
		
		if Humanoid and Humanoid.RigType == Enum.HumanoidRigType.R15 then -- Checks if the Humanoid exists, then makes sure its RigType is R15 since we know R15 Characters have those value objects.
			
			-- There are other ways of approaching this instead of using ":WaitForChild()" each time but we'll keep it simple for this example
			local BodyDepthScale = Humanoid:WaitForChild("BodyDepthScale")
			local BodyHeightScale = Humanoid:WaitForChild("BodyHeightScale")
			local BodyProportionScale = Humanoid:WaitForChild("BodyProportionScale")
			
			BodyDepthScale.Value = 1
			BodyHeightScale.Value = 2
			BodyProportionScale.Value = 0.5
			-- etc.
		end
	end)
end)

Updating those value objects will scale the Accessories with the Character model but it’ll be a bit more difficult to make everything uniform in comparison to the first option.


Additional Resources

Humanoid.RigType Property Documentation - Roblox Creator Documentation

HumanoidRigType Enum Documentation - Roblox Creator Documentation

CharacterAppearanceLoaded Event Documentation - Roblox Creator Documentation


– This one is for the built-in 3D Importer plugin but I thought I’d include it here anyway in case you wanted to compare it with the HumanoidRigType Enum.
RigType Enum Documentation - Roblox Creator Documentation

2 Likes

To get an even scale, just divide or multiply them by the same number.

for _, scale in humanoid:GetChildren() do
	if scale:IsA("NumberValue") then
		scale.Value *= SCALE_FACTOR
	end
end
2 Likes

I made a free ressource for it some months ago if you want to.

1 Like

thank you so much! I used the first solution to do this task. I’m very grateful for your help

Hey man it works in studio but when I’m in game I get this
image
do you know a way I can fix this?

As I mentioned in my post, it’s currently in Beta (it’s not fully complete yet), which means that it’d only work in Roblox Studio until the feature has been released.


Ahh good idea! My 4 AM brain could not think of that lol, thanks for pointing that out.

1 Like

how long would it usually take for a beta feature to be released?

The amount of time it takes for different features to exit Beta likely varies depending on the feedback they receive from developers along with the technical limitations that might be involved with its rollout.

For that specific feature (the Scale API), it seems like it might be several months until it’s fully released based on this post from a Roblox Staff member:

1 Like

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