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

Бег на компьютере и телефоне

Кнопка бега для телефона и клавиша Shift для компьютера.

Иллюстрация: Бег на компьютере и телефоне
🎯 Что получится

При удержании Shift или экранной кнопки персонаж бежит быстрее.

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

Где разместить: Создайте объекты точно по схеме в инструкции.

В StarterPlayer → StarterPlayerScripts создайте LocalScript и вставьте код. Запустите Play: на ПК удерживайте Shift, а на телефоне нажимайте экранную кнопку «Бег».
При отпускании кнопки прежняя скорость восстанавливается, только если её не успела изменить другая механика. Не устанавливайте этот скрипт вместе с другим контроллером бега на Shift: выберите один.
Для соревновательной игры управление скоростью должно проверяться сервером.

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

Script / LocalScript
-- LocalScript в StarterPlayerScripts: Shift + кнопка на телефоне
local Players = game:GetService("Players")
local ContextActionService = game:GetService("ContextActionService")
local player = Players.LocalPlayer
local RUN_SPEED = 28
local humanoid, sprint, originalSpeed = nil, false, nil

local function stopSprint()
    if not sprint then return end
    sprint = false
    if humanoid and humanoid.Parent and originalSpeed and math.abs(humanoid.WalkSpeed - RUN_SPEED) < 0.01 then
        humanoid.WalkSpeed = originalSpeed
    end
    originalSpeed = nil
end
local function setup(character)
    stopSprint()
    humanoid = character:WaitForChild("Humanoid")
end
player.CharacterAdded:Connect(setup)
if player.Character then setup(player.Character) end

local function onAction(_, state)
    if state == Enum.UserInputState.Begin then
        if humanoid and humanoid.Health > 0 and not sprint then
            originalSpeed = humanoid.WalkSpeed
            humanoid.WalkSpeed = RUN_SPEED
            sprint = true
        end
    elseif state == Enum.UserInputState.End or state == Enum.UserInputState.Cancel then
        stopSprint()
    end
    return Enum.ContextActionResult.Sink
end
ContextActionService:BindAction("IgroSprint", onAction, true, Enum.KeyCode.LeftShift)
ContextActionService:SetTitle("IgroSprint", "Бег")
ContextActionService:SetPosition("IgroSprint", UDim2.new(0.8, 0, 0.6, 0))

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

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

Ваш прогресс

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

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

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

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

Измените FAST_SPEED на 36.

2. Улучшите

Добавьте трассу с длинными прямыми и поворотами.

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

Сделайте игру «Быстрый курьер».

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

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

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

Если кнопка не видна, проверьте, что используется LocalScript и тестируется мобильный ввод. Если скорость не возвращается после отпускания, другой скрипт мог её изменить; данный код не отменяет чужие эффекты.