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

Гравитация: лёгкий и обычный режим

Две площадки меняют ощущение тяжести только у коснувшегося игрока.

Иллюстрация: Гравитация: лёгкий и обычный режим
🎯 Что получится

В зоне слабой гравитации персонаж дольше падает, другая зона возвращает обычное движение.

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

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

Создайте LowGravityPad и NormalGravityPad в Workspace.
Включите Anchored.
Вставьте Script в ServerScriptService.
Проверяйте на R15 или R6 персонаже.

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

Script
local low = workspace:WaitForChild("LowGravityPad")
local normal = workspace:WaitForChild("NormalGravityPad")
local factor = 0.35
local busy = {}
local function setGravity(hit, useLow)
    local char = hit:FindFirstAncestorOfClass("Model")
    local hum = char and char:FindFirstChildOfClass("Humanoid")
    local root = char and char:FindFirstChild("HumanoidRootPart")
    if not hum or hum.Health <= 0 or not root or busy[char] then return end
    busy[char] = true
    local attachment = root:FindFirstChild("IgroGravityAttachment")
    local force = root:FindFirstChild("IgroGravityForce")
    if useLow then
        if not attachment then
            attachment = Instance.new("Attachment")
            attachment.Name = "IgroGravityAttachment"
            attachment.Parent = root
        end
        if not force then
            force = Instance.new("VectorForce")
            force.Name = "IgroGravityForce"
            force.Attachment0 = attachment
            force.RelativeTo = Enum.ActuatorRelativeTo.World
            force.Parent = root
        end
        force.Force = Vector3.new(0, root.AssemblyMass * workspace.Gravity * (1-factor), 0)
    else
        if force then force:Destroy() end
        if attachment then attachment:Destroy() end
    end
    task.delay(0.8, function() busy[char] = nil end)
end
low.Touched:Connect(function(hit) setGravity(hit, true) end)
normal.Touched:Connect(function(hit) setGravity(hit, false) end)

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

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

Ваш прогресс

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

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

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

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

Поставьте factor = 0.15 и сравните падение.

2. Улучшите

Добавьте две зоны с разной силой гравитации.

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

Сделайте космическую карту с низкой гравитацией.

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

Как в этой практике создаётся слабая гравитация только для одного героя?

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

VectorForce рассчитывает силу по массе персонажа. Если другой скрипт меняет массу или Gravity, расчёт может потребовать обновления.