Инструкция по разработке игры Двери в 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
Теперь при нажатии на левую кнопку мыши дверь открывается, на правую — закрывается.
Мы создали с вами одну дверь, теперь вы сможете создать 50 дверь doors в Roblox. Знакомьтесь и с другими платформами по разработке игр с помощью видео на нашем канале.
Если хотите развиваться в программировании на языке Lua и создавать свои игры по типу Roblox 100 дверей и другие, записывайтесь на занятия для детей в школу «Пиксель». На курсе мы изучаем платформу с самых основ до самостоятельных проектов, которыми потом можно делиться в игровой среде с другими геймерами. Мы поможем погрузиться в мир IT и освоить навык программирования для детей на профессиональном уровне!