Школа киберспорта
Меню
ПРАКТИЧЕСКАЯ ИНСТРУКЦИЯ

Как написать первый скрипт в Roblox Studio на Luau

Пошаговый пример Roblox Studio: создать Script, проверить Output и сделать платформу, меняющую цвет при касании персонажа. Код и разбор.

Ученик собирает конструкцию из кубиков рядом с мамой и ноутбуком с тренером.
Иллюстрация учебной ситуации.

В Roblox Studio можно начать программирование с маленького проекта: платформа меняет цвет, когда к ней прикасается персонаж игрока. Такое упражнение связывает код с видимым результатом и знакомит с объектом, свойством, событием и условием.

На каком языке пишут скрипты Roblox Studio?

Для скриптов создателей Roblox используется Luau, язык на основе Lua. Поэтому поисковые фразы «Lua в Roblox» обычно ведут к материалам по Luau. Это ответ о коде создаваемого проекта, а не о языке внутреннего движка всей платформы.

Перед началом откройте собственный учебный проект с базовой площадкой. Не нужно публиковать игру: первый результат можно проверить внутри Studio.

Где создать Script и увидеть его вывод?

В Explorer найдите ServerScriptService, добавьте в него объект Script и назовите его TrainingPad. Для первой проверки оставьте одну строку:

print("Учебный скрипт запущен")

Откройте Output через меню Window и запустите тест кнопкой Play. В Output должна появиться указанная строка. Затем остановите тест кнопкой Stop. Такой порядок описан в официальном вводном уроке Roblox.

Как сделать платформу с реакцией на касание?

Замените содержимое того же Script примером ниже. Он создаёт закреплённую платформу, реагирует на касание персонажа игрока, меняет цвет и возвращает исходный цвет через две секунды.

local Players = game:GetService("Players")

local pad = Instance.new("Part")
pad.Name = "TrainingPad"
pad.Size = Vector3.new(6, 0.5, 6)
pad.Position = Vector3.new(0, 3, 0)
pad.Anchored = true
pad.Color = Color3.fromRGB(210, 55, 65)
pad.Parent = workspace

local busy = false

pad.Touched:Connect(function(hit)
    local character = hit.Parent
    if character == nil then
        return
    end

    local player = Players:GetPlayerFromCharacter(character)
    if player == nil or busy then
        return
    end

    busy = true
    pad.Color = Color3.fromRGB(60, 180, 110)
    print("Платформу коснулся игрок: " .. player.Name)

    task.delay(2, function()
        pad.Color = Color3.fromRGB(210, 55, 65)
        busy = false
    end)
end)

Положение (0, 3, 0) рассчитано на простой учебный проект. Если в вашем мире платформа перекрыта другим объектом или слишком далеко, измените координаты на подходящие. Скрипт создаёт объект при запуске теста; после остановки он не становится постоянной ручной постройкой проекта.

Что делает каждая часть кода?

Переменная pad хранит созданный Part. Свойства задают его размер, положение, закрепление и цвет. Событие Touched запускает обработчик при соприкосновении; параметр hit содержит коснувшуюся часть.

Проверка GetPlayerFromCharacter определяет, относится ли найденная модель к персонажу игрока. Флаг busy не позволяет многократным касаниям сразу запускать одинаковую реакцию. Это общая пауза всей платформы: пока она зелёная, касания других игроков тоже пропускаются. Пример не начисляет очки и не сохраняет данные.

Как проверить результат и найти ошибку?

Запустите Play, найдите платформу и коснитесь её персонажем. Проверьте изменение цвета и сообщение в Output. Отойдите, дождитесь возврата красного цвета и коснитесь снова. Для повторного события нужен новый контакт; простое стояние на платформе не задумано как непрерывная активация.

Если ничего не происходит, проверьте место Script, ошибки в Output и точность имён. Если платформа создана, но не видна, проверьте координаты. Красная строка ошибки помогает найти конкретное место: сначала исправьте первую ошибку, затем повторите тест.

Как продолжить упражнение?

Измените один параметр: цвет, размер или длительность паузы. До запуска сформулируйте ожидаемый результат. Затем сравните его с поведением проекта. На обучении Roblox Studio можно развить пример в несколько платформ, но счётчик, индивидуальную паузу для каждого игрока и сохранение прогресса следует проектировать отдельно.

Ученик и тренер проверяют картонный лабиринт с деревянным шариком.
Иллюстрация учебной ситуации.

Глоссарий

Luau
Язык скриптов Roblox, основанный на Lua.
Script
Объект с программным кодом; в этом упражнении расположен в ServerScriptService.
Свойство
Параметр объекта, например размер, цвет или положение.
Событие
Сигнал о произошедшем действии, на который может реагировать код.
Обработчик
Функция, выполняемая в ответ на событие.
Флаг busy
Логическая переменная, которая временно ограничивает повторный запуск реакции.

Вопросы и ответы

Нужно писать на Lua или Luau?

В Roblox Studio используется Luau. Базовые конструкции похожи на Lua, но обучение следует сверять с документацией Roblox и Luau.

Нужно ли публиковать игру для проверки?

Нет. Для этого примера достаточно режима тестирования Play внутри собственного проекта Studio.

Почему платформа исчезает после Stop?

Её создаёт скрипт во время теста. При следующем запуске он создаст объект снова; это ожидаемое поведение примера.

Почему второе касание сразу не меняет цвет ещё раз?

Флаг busy действует две секунды для всей платформы. Дождитесь возврата красного цвета, отойдите и создайте новый контакт.

Материал подготовлен 8 сентября 2026 года. Упражнения — учебные примеры; игровые клиенты и код Roblox Studio в рамках подготовки статьи не запускались. Перед практикой проверьте версию игры и доступность режима.

Скачать учебный Script — TrainingPad.server.luau

Все инструкции и помощь →