Alternative for using `:ScaleTo()` for a Player rig

Hey. I have a custom character for the players on my game and its literally just a sphere. The sphere rolls into things and if its size is greater than their size, then the sphere grows. I don’t know how to make the character sphere grow other than using :ScaleTo(). It is very laggy to use because it kind of pauses your character or repositions it while it scales you. Can anyone help with this? Here is my previous way of doing it:

local function peiceTouch(newPeice, ranSize)
	local debounce = false
	newPeice.PrimaryPart.Touched:Connect(function(hit)
		if players:GetPlayerFromCharacter(hit.Parent) and not debounce then
			debounce = true
			local plr = players:GetPlayerFromCharacter(hit.Parent)
			print(`{plr.Name}: {plr.leaderstats.Size.Value}, Peice: {ranSize}`)
			if plr.leaderstats.Size.Value >= ranSize and plr.IsPlaying.Value then
				plr.leaderstats.Size.Value += ranSize
				plr.Character:ScaleTo(1+(plr.leaderstats.Size.Value/100))
				newPeice:Destroy()
				debounce = false
			end
		end
	end)
end

It’s sad to know that this is also my problem and no one helped you. If you found a solution, can you tell me how?

Setting Size directly may work if your instance consists of one descendant.

ScaleTo does much more than updating the size of the Character.

If you must use ScaleTo, you would have to build the game around it.

Considering an alternative approach such as MeshPart’s may be your solution.