ВЕРСИЯ ДЛЯ СЛАБОВИДЯЩИХ
Блог онлайн школы Пиксель

Инструкция по разработке игры Двери в Roblox (Двери в Roblox)

Платформа Roblox позволяет самостоятельно создать свою игру, совершенствовать и дорабатывать элементы виртуального мира. Юные программисты постоянно экспериментируют — мы давно получали просьбы, что ребятам хочется научиться разрабатывать игру Двери в Roblox. Рассказываем, как это сделать!

В статье мы разберем как создать 1 дверь. Научившись, вы сможете запрограммировать в Roblox 100 дверей. Главное — понять алгоритм.

Начало создания двери Roblox Doors

Откроем Roblox Studio и создадим Baseplate.

Программируем помещение и дверь с помощью использования простых элементов (Part) — пример ниже. Коды в Roblox двери смотри в конце статьи.
Элемент двери переименовываем в Door, а помещаем в него два компонента: ClickDetector и Script. Для этого необходимо навести мышкой на область, указанную на скриншоте, и нажать “+”.
Из предложенного выбираем ClickDetector.
Таким же образом добавляем компонент Script. Результат действий представлен на скриншоте.
Далее двойным кликом по Script открываем его. На экране мы видим:
Стираем код и пишем свой. Переходим к программированию двери на открытие.

Открытие двери в Roblox

В переменной door храниться сам элемент. Теперь есть возможность менять позицию и вращать дверь, используя переменную door. В pivot хранится новая ось вращения, которая смещена вдоль оси x. Offset хранит в себе само смещение.
Затем создаем переменные, в которых мы будем отслеживать:

  • открывается или закрывается в данный момент дверь (isOpening);
  • открыта или закрыта дверь сейчас(isOpen);
  • шаг открытия (step);
  • текущее значения (angle).
Открываться дверь будет нажатием на нее левой кнопкой мыши. Это происходит благодаря методу MouseClick в ClickDetector. Сам ClickDetector находится внутри элемента Door — мы его добавили ранее.

Важно обязательно учесть: название ClickDetector в коде должно совпадать с ClickDetector в Explorer — на скриншоте они подчеркнуты красным.

Перед открытием двери необходимо проверить ее положение на данные момент: не открыта ли она (isOpen) и не открывается ли она в данный момент (isOpening). При выполнении хотя бы одного условия мы не сможем ее открыть. Если же оба условия не выполняются, то мы открываем дверь.

В цикле увеличиваем значение открытие двери на step каждые 0.01 сек. Переменная pivot хранит значение угла в радианах, а в door.CFrame записывается позиция и угол двери.

Когда дверь откроется, мы выходим из цикла и сообщаем, что дверь уже открыта isOpen ставим значение true. Так как дверь уже не открывается isOpening, ставим false, для angle ставим значение 0.

Игра Roblox: закрытие двери

Закрытие двери происходит аналогично, только по нажатию на правую кнопку мыши. Это можно сделать благодаря методу RightMouseClick в ClickDetector. Мы снова проверяем открыта ли дверь и открывается ли она сейчас — если оба условия не выполняются, то действие закрытия не имеет смысла. Вращение двери будет в противоположную сторону.

Когда дверь закроется, мы выходим из цикла и сообщаем: isOpen ставим значение false - дверь закрыта, isOpening ставим false — дверь уже не закрывается. Для angle ставим значение 0.
Открываем script и помещаем такой код:

local door = script.Parent

local pivot = door.CFrame * CFrame.new(door.Size.X/2,0,0) -- This is the pivot its relative to the world point , here its the top right corner of the part (the default part of size 4,1,2)

local Offset = pivot:Inverse() * door.CFrame -- Offset between the pivot and the part

local angle = 0

local step = 3

local isOpening = false

local isOpen = false

door.ClickDetector.MouseClick:Connect(function()

if isOpen then return end

if isOpening then return end

isOpening = true

while angle < 90 do

angle += step

pivot *= CFrame.Angles(0, math.rad(step), 0)

door.CFrame = pivot * Offset

wait(0.01)

end

isOpen = true

isOpening = false

angle = 0

end)

door.ClickDetector.RightMouseClick:Connect(function()

if not isOpen then return end

if isOpening then return end

isOpening = true

while angle < 90 do

angle += step

pivot *= CFrame.Angles(0, -math.rad(step), 0)

door.CFrame = pivot * Offset

wait(0.01)

end

isOpen = false

isOpening = false

angle = 0

end)
Теперь при нажатии на левую кнопку мыши дверь открывается, на правую — закрывается.

Мы создали с вами одну дверь, теперь вы сможете создать 50 дверь doors в Roblox. Знакомьтесь и с другими платформами по разработке игр с помощью видео на нашем канале.

Если хотите развиваться в программировании на языке Lua и создавать свои игры по типу Roblox 100 дверей и другие, записывайтесь на занятия для детей в школу «Пиксель». На курсе мы изучаем платформу с самых основ до самостоятельных проектов, которыми потом можно делиться в игровой среде с другими геймерами. Мы поможем погрузиться в мир IT и освоить навык программирования для детей на профессиональном уровне!
Бесплатные видеоуроки Roblox для детей