← Все практические скрипты
Персонаж · Уверенный · 20 мин

Превращение в великана: увеличить, уменьшить, вернуть

Три кнопки изменяют масштаб R15-персонажа.

Иллюстрация: Превращение в великана: увеличить, уменьшить, вернуть
🎯 Что получится

GrowPad увеличивает игрока в 1,8 раза, ShrinkPad уменьшает до 0,6, NormalPad восстанавливает исходный масштаб.

1. Подготовьте объект

Где разместить: Script в ServerScriptService

Выберите в Game Settings тип аватара R15 (для изменения масштаба Humanoid).
В Workspace создайте три Part: GrowPad, ShrinkPad, NormalPad. Включите Anchored и CanTouch.
В ServerScriptService добавьте обычный Script и вставьте код.
Запустите Play и по очереди наступите на кнопки.

2. Вставьте код

Script
local pads = {
    GrowPad = 1.8,
    ShrinkPad = 0.6,
    NormalPad = 1,
}
local debounce = {}

local function bindPad(padName, factor)
    local pad = workspace:WaitForChild(padName)
    pad.Touched:Connect(function(hit)
        local character = hit:FindFirstAncestorOfClass("Model")
        local humanoid = character and character:FindFirstChildOfClass("Humanoid")
        if not humanoid or humanoid.Health <= 0 or humanoid.RigType ~= Enum.HumanoidRigType.R15 then return end
        if debounce[humanoid] then return end
        debounce[humanoid] = true
        -- GetAppliedDescription позволяет восстановить исходный масштаб игрока.
        local description = humanoid:GetAppliedDescription()
        if not humanoid:GetAttribute("IgroBaseHeight") then
            humanoid:SetAttribute("IgroBaseHeight", description.HeightScale)
            humanoid:SetAttribute("IgroBaseWidth", description.WidthScale)
            humanoid:SetAttribute("IgroBaseDepth", description.DepthScale)
            humanoid:SetAttribute("IgroBaseHead", description.HeadScale)
        end
        description.HeightScale = humanoid:GetAttribute("IgroBaseHeight") * factor
        description.WidthScale = humanoid:GetAttribute("IgroBaseWidth") * factor
        description.DepthScale = humanoid:GetAttribute("IgroBaseDepth") * factor
        description.HeadScale = humanoid:GetAttribute("IgroBaseHead") * factor
        local ok, err = pcall(function() humanoid:ApplyDescription(description) end)
        if not ok then warn("Не удалось изменить размер: ", err) end
        task.delay(1, function() debounce[humanoid] = nil end)
    end)
end
for name, factor in pairs(pads) do bindPad(name, factor) end

3. Проверьте в игре

Нажмите Play в Roblox Studio и проверьте действие механики. Если механика не работает, откройте окно Output и проверьте тип скрипта, его расположение и названия объектов.

Ваш прогресс

Когда проверите механику в Roblox Studio, отметьте практику как выполненную. Отметка хранится только в этом браузере, не в личном кабинете.

Если объединяете несколько скриптов

Добавляйте механики по одной и проверяйте окно Output. Не создавайте несколько одинаковых систем монет или интерфейсов; скрипты, меняющие WalkSpeed, прыжок или освещение, могут влиять друг на друга.

⭐ Три шага к собственной игре
1. Повторите и измените

Поменяйте 1.8 на 2.2 и 0.6 на 0.8.

2. Улучшите

Сделайте платформы разного цвета и подпишите их.

3. Придумайте своё

Постройте лабиринт, в котором маленький герой проходит в узкий тоннель.

4. Проверьте себя

Какой объект отвечает за движение и параметры персонажа?

🛠 Если не работает

Масштабирование HumanoidDescription работает с R15. Названия GrowPad, ShrinkPad и NormalPad должны совпадать точно.