What exactly does humanoid.AutomaticScalingEnabled do?

Can anyone elaborate for me on what exactly Humanoid.AutomaticScalingEnabled does and its purpose?

I’ve tried searching for information on this property and the best I could find was this topic which I didn’t find all that informative/clear. I may have a need to change this setting and I’d like to know what the potential problems might be if its disabled.

From my understanding, if the property is false, you can change hip height via code. If it’s true, you can’t change hip height via code. Not sure tho.

Hrm. I’ve been able to change the HipHeight whether its enabled or disabled. (LocalScript)

It just toggles between if code can change a humanoids body proportions, like it says in the topic you linked yourself. What else don’t you understand?

So I tested this.
From Server Script:
Enabled, Can change body part size, replicates to client
Disabled, Can change body part size, replicates to client

From Local Script:
Enabled, Can change body part size, does not replicate to server
Disabled, Can change body part size, does not replicate to server.

Either way enabled/disabled it doesn’t seem to do anything different.

AutomaticScalingEnabled allows the Humanoid’s automatic scaling code to be enabled/disabled by developers.

Basically, the Humanoid has a code that automatically scales It, if this is disabled It won’t be able to edit the properties of the humanoid.

Also disables Developer Code being able to change Size Properties in the humanoid (HeadSize, etc, blabla)

local players = game:GetService("Players")

players.PlayerAdded:Connect(function(player)
	player.CharacterAdded:Connect(function(character)
		if not player:HasAppearanceLoaded() then
			player.CharacterAppearanceLoaded:Wait()
		end
		
		local humanoid = character:WaitForChild("Humanoid")
		humanoid.AutomaticScalingEnabled = false
		for _, valueInstance in ipairs(humanoid:GetChildren()) do
			if valueInstance:IsA("NumberValue") then
				valueInstance.Value *= 2
			end
		end
	end)
end)
local players = game:GetService("Players")

players.PlayerAdded:Connect(function(player)
	player.CharacterAdded:Connect(function(character)
		if not player:HasAppearanceLoaded() then
			player.CharacterAppearanceLoaded:Wait()
		end
		
		local humanoid = character:WaitForChild("Humanoid")
		for _, valueInstance in ipairs(humanoid:GetChildren()) do
			if valueInstance:IsA("NumberValue") then
				valueInstance.Value *= 2
			end
		end
	end)
end)

Run both snippets of code and you’ll see the difference.

The former essentially prevents the humanoid from being scaled.

1 Like

Ok ty that was helpful. So basically this toggle allows the server to scale (or not) the character using the BodyScale value objects in the humanoid.

So if I disable this what are the repercussions?

(Btw I did notice that if I use a “StarterHumanoid” with this option disabled by default, my character falls apart when it spawns)

1 Like