Блог онлайн школы Пиксель

Как сделать световой меч в Роблокс

Роблокс Студио — это увлекательный и несложный движок, на котором можно создавать игры, используя язык программирования Lua. А затем публиковать их на сайте Roblox, чтобы в них могли сыграть ребята со всего мира. Мы научим вас создавать 3D-игры в Роблокс и писать скрипты. Наши уроки Роблокс Студио будут полезны как начинающим, так и продвинутым ребятам. 

В этом уроке мы научимся создавать холодное оружие в Roblox Studio и в качестве примера сделаем лазерный меч. Создать его можно несколькими способами, мы расскажем про каждый из них. Наш звездный меч в Роблокс будет наносить урон, а также издавать звук. Давайте начнем!

Инструкция: как скачать Роблокс Студио на компьютер.

Создание меча


Создаем модель меча. Способ 1


Первый способ — загрузить модель прямо с компьютера. Но не все модели, которые вы сможете найти, будут поддерживаться, есть некоторые ограничения. Формат модели должен быть obj. Кликаем по Baseplate и добавляем MeshPart
В его свойствах находим MeshId, кликаем на папку. 
В появившемся окне выбираем скачанную модель и нажимаем "Открыть". Будет несколько предупреждений, просто нажимаем "Да". 
У нас модель загрузилась больше, чем надо, поэтому просто изменим ее размер. Не забывайте зажимать клавишу Shift, когда меняете размер, чтобы пропорции объекта сохранялись.
Теперь нам надо поставить рукоять. Возьмем цилиндр, подгоним его под размер и разместим ровно на рукоять нашей модели. Переименуем в Handle, это важно. 
Теперь к Workspace добавим Tool, это специальный инструмент, который игрок может поднимать и с которым может взаимодействовать. В него переместим модель меча и рукоятку. Саму рукоятку необходимо закрепить за мечом с помощью инструмента Weld.
Затем нужно сделать рукоять прозрачной. 
Также добавим хитбокс — это границы нашего меча, при пересечении которых будет засчитываться урон. Добавляем прямоугольник, ставим прямо в лезвие и делаем чуть больше его. Закрепляем с помощью инструмента Weld и отключаем коллизию и делаем невидимым. 
Проверяем, может ли наш персонаж поднять меч. Чтобы меч лежал в руке в правильном положении, нужно его слегка повернуть. 
Все, теперь меч лежит правильно.
Ссылка на скачивание готовой модели

Создаем модель меча. Способ 2


Ну и второй способ — это создать меч с нуля самому. В качестве примера создадим световой меч, его проще всего сделать.

Добавляем цилиндр, задаем ему нужный размер, красим в яркий цвет и выбираем материал Neon. 
Теперь дублируем его и красим в темный цвет, меняем материал на любой другой — это будет рукоять. Назовем эти два объекта соответствующе: Handle и Blade. Также добавим хитбокс. 
Продублируем лезвие, сделаем его чуть больше, отключим коллизию и сделаем невидимым. 
Закрепляем рукоять и хитбокс к лезвию. Добавляем Tool и перетаскиваем в него все три объекта. Проверяем работу.

Lightsaber


Создаем анимацию


Теперь нам нужно создать анимацию. Перейдем во вкладку Plugins и выберем Build Rig. Нажимаем Block Rig, появился манекен. Теперь запустим плагин анимации Animation Editor.
Кликаем по манекену и даем название анимации (например, AttackAnim). Перед нами timeline. Здесь нужно оставлять ключевые точки анимации (начало и конец анимации). То есть нужно сдвинуть ползунок времени на несколько секунд вперед и поставить конечное положение объекта. Компьютер сам рассчитает в каждый момент времени, в каком положении должен быть объект, чтобы достичь конечной позиции.

Нажимаем на правое плечо манекена, сдвигаем ползунок на таймлайне немного вперед и с помощью инструмента вращения вытягиваем руку вперед. 
У нас создались ключевые точки, можно запустить анимацию, чтобы проверить ее. Теперь выделяем точки в начале и копируем. Двигаем ползунок еще дальше и вставляем. Теперь манекен вытягивает руку и возвращает ее в начальное положение. Наша анимация получилась цикличной.
Нажимаем на три точки и экспортируем анимацию. Копируем номер анимации. Не потеряйте его, он нам скоро пригодится.

Пишем скрипт


Добавление компонентов


Теперь давайте перейдем к программной части, нам нужно добавить два скрипта. Один будет отвечать за произведение атаки, а второй — за нанесение урона. Так и назовем их: Attack и Damage. Для скрипта Attack добавляем анимацию и в ее свойствах вставляем номер анимации. 
Также добавим BoolValue — флаг, который будет отвечать за возможность атаки. Это нужно, чтобы игрок не смог бесконечно быстро атаковать противников. Назовем его canDamage.

Вот что получается (даем заметки с объяснениями в конце строк):


local sword = script.Parent -- запоминаем меч
local canDamage = sword.canDamage -- флаг, отвечающая за атаку
local anim = script.Animation -- запоминаем анимацию удара
local cooldown = false -- флаг, отвечающий за кулдаун удара
local sound = Instance.new("Sound", sword) -- создаем объект "звук"
sound.SoundId = "rbxassetid://1647165403" -- указываем id звука
if not sound.IsLoaded then --загружаем звук
sound.Loaded:wait()
end
sword.Activated:Connect(function() -- функция, которая запускается при экипировке меча
if cooldown == false then -- если кулдауна нет, то
sound:Play()
local humanoid = sword.Parent:FindFirstChildWhichIsA('Humanoid') -- запоминаем держателя меча
local loadedAnim = humanoid:LoadAnimation(anim) -- загружаем анимацию
cooldown = true -- ставим кулдаун
loadedAnim:Play() -- запускаем анимацию
canDamage.Value = true -- меняем значение флага
wait(1) -- ждем секунду
loadedAnim:Stop() -- останавливаем анимацию
canDamage.Value = false -- переключаем обратно флаг, чтобы нельзя было снова ударить
cooldown = false -- отключаем кулдаун
end
end)

Теперь пишем скрипт Damage


local hitbox = script.Parent.Hitbox -- загружаем хитбокс
local canDamage = script.Parent.canDamage -- загружаем флаг урона
hitbox.Touched:Connect(function(hit) -- функция, которая запускается при касании мечом объекта
local hum = hit.Parent:FindFirstChildWhichIsA('Humanoid') -- загружаем персонажа
if canDamage.Value then -- если флаг равен истине, то
hum:TakeDamage(25) -- наносим урон в 25 единиц
canDamage.Value = false -- переводим флаг в ложь
end
end)

Проверяем работу.


В Роблокс можно создавать самые разные предметы, устраивать гонки, бои, зомби-апокалипсис и многое другое. В школе программирования для детей “Пиксель” мы проводим курс Roblox Studio и программирование на языке Lua для детей 9-14 лет. Записывайтесь к нам, чтобы узнать, как делать игры в Роблокс Студио, и создать свои крутые проекты. 

Бесплатные видеоуроки Roblox для детей