Платформа Roblox позволяет самостоятельно создать свою игру, совершенствовать и дорабатывать элементы виртуального мира. Юные программисты постоянно экспериментируют — мы давно получали просьбы, что ребятам хочется научиться разрабатывать игру Двери в Roblox. Рассказываем, как это сделать!
В статье мы разберем как создать 1 дверь. Научившись, вы сможете запрограммировать в Roblox 100 дверей. Главное — понять алгоритм.
В статье мы разберем как создать 1 дверь. Научившись, вы сможете запрограммировать в Roblox 100 дверей. Главное — понять алгоритм.
Начало создания двери Roblox Doors
Откроем Roblox Studio и создадим Baseplate.
Программируем помещение и дверь с помощью использования простых элементов (Part) — пример ниже. Коды в Roblox двери смотри в конце статьи.
Программируем помещение и дверь с помощью использования простых элементов (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.
Важно обязательно учесть: название 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.
Когда дверь закроется, мы выходим из цикла и сообщаем: 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)
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 и освоить навык программирования для детей на профессиональном уровне!
Мы создали с вами одну дверь, теперь вы сможете создать 50 дверь doors в Roblox. Знакомьтесь и с другими платформами по разработке игр с помощью видео на нашем канале.
Если хотите развиваться в программировании на языке Lua и создавать свои игры по типу Roblox 100 дверей и другие, записывайтесь на занятия для детей в школу «Пиксель». На курсе мы изучаем платформу с самых основ до самостоятельных проектов, которыми потом можно делиться в игровой среде с другими геймерами. Мы поможем погрузиться в мир IT и освоить навык программирования для детей на профессиональном уровне!