Given that you can resize manually in Studio itself, I figure somebody must have some code out there available. It just doesn’t seem that I can find it.
local main = {}
-- коэффициент изменения размера
--[[
----------- Главный модуль логики -----------
main:ResizeChar(char,Scale) -- скалирование персонажа
main:ResizeModel(Model, Scale) -- скалирование модели
]]
-- scaling factor
-- cell size
SCALE = game.Workspace.Constant.SizeVillage.Value -- коэффициент скалирования
SizeGrid = game.Workspace.Constant.SizeGrid.Value
-- изменение размера персонажа R15
function main:ResizeChar(char,Scale)
if SCALE == 1 then return end -- не используем изменение размера
char.Humanoid.BodyDepthScale.Value = Scale
char.Humanoid.BodyHeightScale.Value = Scale
char.Humanoid.BodyWidthScale.Value = Scale
char.Humanoid.HeadScale.Value = Scale
end
-- скалирование размера модели домика
-- https://devforum.roblox.com/t/scaling-models-with-rotation-orientation/288777/4
function main:ResizeModel(Model, Scale) -- loops through model and scales
if SCALE == 1 then return end -- не используем изменение размера
local Primary = Model.PrimaryPart
local PrimaryCFrame = Primary.CFrame
for i, Part in pairs(Model:GetDescendants()) do --GetChildren
if Part:IsA("BasePart") then
Part.Size = (Part.Size * Scale) -- изменение размера
if Part ~= Primary then
-- Если это не PrimaryPart то меняем его позицию
Part.Position = PrimaryCFrame.Position + (Part.Position-PrimaryCFrame.Position)* Scale
end
end
if Part:IsA("Texture") then
Part.StudsPerTileU = SizeGrid * Scale
Part.StudsPerTileV = SizeGrid * Scale
end
end
end
return main
local ReplicatedStorage = game:GetService("ReplicatedStorage") -- берём ссылку на сервис хранения
local Global = require(ReplicatedStorage.GlobalModule) -- подключение модуля
local clickDetector = script.Parent.ClickDetector -- подключения детектора клика
-- коэффициент изменения размера
SCALE = game.Workspace.Constant.SizeVillage.Value
-- функция обработки клика
function onMouseClick(player)
-- print("You clicked me!",player.Name)
if SCALE == 1 then return end
local character = player.Character or player.CharacterAdded:wait() -- поиск кликнувшего персонажа
if character.Humanoid.HeadScale.Value >0.9 then
Global:ResizeChar(character,SCALE)
-- меняем характеристики
character.Humanoid.WalkSpeed=character.Humanoid.WalkSpeed * SCALE
character.Humanoid.JumpPower=character.Humanoid.JumpPower * SCALE
-- смена текстуры
local Part = script.Parent.Parent.Texture
Part.Texture = ReplicatedStorage.Textures.Grid.Texture
-- Part.StudsPerTileU = Part.StudsPerTileU * SCALE
-- Part.StudsPerTileV = Part.StudsPerTileV * SCALE
else
character.Humanoid.Jump=true -- чтобы вылезти из земли
Global:ResizeChar(character,1)
-- меняем характеристики
character.Humanoid.WalkSpeed=character.Humanoid.WalkSpeed / SCALE
character.Humanoid.JumpPower=character.Humanoid.JumpPower / SCALE
character.Humanoid.Jump=true -- чтобы вылезти из земли
-- смена текстуры
local Part = script.Parent.Parent.Texture
Part.Texture = "rbxassetid://17981533"
-- Part.StudsPerTileU = Part.StudsPerTileU * SCALE
-- Part.StudsPerTileV = Part.StudsPerTileV * SCALE
end
end
clickDetector.MouseClick:connect(onMouseClick)