← Все практические скрипты
Персонаж · Начинающий · 15 мин

Заморозка и разморозка персонажа

Одна платформа останавливает героя, другая возвращает движение.

Иллюстрация: Заморозка и разморозка персонажа
🎯 Что получится

При заморозке герой не может двигаться и прыгать. Разморозка возвращает прежние настройки.

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

Где разместить: Обычный Script в ServerScriptService

Создайте в Workspace два Part: FreezePad и UnfreezePad. Обоим задайте Anchored = true.
Добавьте обычный Script в ServerScriptService.
Нажмите Play и наступите на площадки.

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

Script
local freeze = workspace:WaitForChild("FreezePad")
local unfreeze = workspace:WaitForChild("UnfreezePad")
local debounce = {}
local function apply(hit, frozen)
    local character = hit:FindFirstAncestorOfClass("Model")
    local humanoid = character and character:FindFirstChildOfClass("Humanoid")
    if not humanoid or humanoid.Health <= 0 or debounce[humanoid] then return end
    debounce[humanoid] = true
    if humanoid:GetAttribute("IgroFreezeStored") == nil then
        humanoid:SetAttribute("IgroFreezeStored", true)
        humanoid:SetAttribute("IgroOldWalkSpeed", humanoid.WalkSpeed)
        humanoid:SetAttribute("IgroOldUseJumpPower", humanoid.UseJumpPower)
        humanoid:SetAttribute("IgroOldJumpPower", humanoid.JumpPower)
        humanoid:SetAttribute("IgroOldJumpHeight", humanoid.JumpHeight)
    end
    if frozen then
        humanoid.WalkSpeed = 0
        humanoid.JumpPower = 0
        humanoid.JumpHeight = 0
    else
        humanoid.WalkSpeed = humanoid:GetAttribute("IgroOldWalkSpeed") or 16
        humanoid.UseJumpPower = humanoid:GetAttribute("IgroOldUseJumpPower")
        humanoid.JumpPower = humanoid:GetAttribute("IgroOldJumpPower") or 50
        humanoid.JumpHeight = humanoid:GetAttribute("IgroOldJumpHeight") or 7.2
        humanoid:SetAttribute("IgroFreezeStored", nil)
    end
    task.delay(0.6, function() debounce[humanoid] = nil end)
end
freeze.Touched:Connect(function(hit) apply(hit, true) end)
unfreeze.Touched:Connect(function(hit) apply(hit, false) end)

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

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

Ваш прогресс

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

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

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

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

Измените цвета площадок: голубой — заморозка, красный — оттаивание.

2. Улучшите

Добавьте третью площадку с медленной скоростью.

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

Придумайте ледяную мини-игру с зонами остановки.

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

Какие параметры движения важно вернуть при разморозке?

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

Если рядом работает другой скрипт скорости/прыжка, они могут мешать друг другу. На время урока отключите его.