В этом уроке мы научимся создавать холодное оружие в Roblox Studio и в качестве примера сделаем лазерный меч. Создать его можно несколькими способами, мы расскажем про каждый из них. Наш звездный меч в Роблокс будет наносить урон, а также издавать звук. Давайте начнем!
Инструкция: как скачать Роблокс Студио на компьютер.
![](https://static.tildacdn.com/tild6664-3364-4839-b835-633233666166/_1-min.png)
Создание меча
Создаем модель меча. Способ 1
Первый способ — загрузить модель прямо с компьютера. Но не все модели, которые вы сможете найти, будут поддерживаться, есть некоторые ограничения. Формат модели должен быть obj. Кликаем по Baseplate и добавляем MeshPart.
![](https://static.tildacdn.com/tild6332-3535-4938-b436-383862633534/_2-min.png)
![](https://static.tildacdn.com/tild6363-6664-4363-b466-343061363230/_3-min.png)
![](https://static.tildacdn.com/tild3564-3161-4264-a437-383462356561/_4-min.png)
![](https://static.tildacdn.com/tild6135-6131-4931-a266-323265626637/_5-min.png)
![](https://static.tildacdn.com/tild3962-6138-4730-b166-623333356165/_6-min.png)
![](https://static.tildacdn.com/tild6565-6232-4662-a138-333663326636/_7-min.png)
![](https://static.tildacdn.com/tild3766-3833-4163-b936-666639663439/_8-min.png)
![](https://static.tildacdn.com/tild6132-6334-4235-b335-336461663734/_9-min.png)
![](https://static.tildacdn.com/tild3734-6338-4730-a238-613261386462/_10-min.png)
![](https://static.tildacdn.com/tild6637-3537-4161-b434-303737386537/_11-min.png)
![](https://static.tildacdn.com/tild3735-6363-4135-b839-343831363662/_12-min.png)
Создаем модель меча. Способ 2
Ну и второй способ — это создать меч с нуля самому. В качестве примера создадим световой меч, его проще всего сделать.
Добавляем цилиндр, задаем ему нужный размер, красим в яркий цвет и выбираем материал Neon.
![](https://static.tildacdn.com/tild3832-3438-4162-b665-326637346261/_13-min.png)
![](https://static.tildacdn.com/tild6630-6435-4135-b139-343134343461/_14-min.png)
![](https://static.tildacdn.com/tild6435-3566-4232-b137-343561343762/_15-min.png)
![](https://static.tildacdn.com/tild3062-6631-4336-b665-323530653366/_16-min.png)
Lightsaber
Создаем анимацию
Теперь нам нужно создать анимацию. Перейдем во вкладку Plugins и выберем Build Rig. Нажимаем Block Rig, появился манекен. Теперь запустим плагин анимации Animation Editor.
![](https://static.tildacdn.com/tild3238-6335-4637-a232-623934393432/_17-min.png)
Нажимаем на правое плечо манекена, сдвигаем ползунок на таймлайне немного вперед и с помощью инструмента вращения вытягиваем руку вперед.
![](https://static.tildacdn.com/tild3265-3232-4438-b236-323364363534/_18-min.png)
![](https://static.tildacdn.com/tild6162-6534-4636-b065-333830363237/_19-min.png)
![](https://static.tildacdn.com/tild3237-3332-4164-a631-373365323337/_20-min.png)
![](https://static.tildacdn.com/tild6463-3430-4462-a235-393037653130/_21-min.png)
Пишем скрипт
Добавление компонентов
Теперь давайте перейдем к программной части, нам нужно добавить два скрипта. Один будет отвечать за произведение атаки, а второй — за нанесение урона. Так и назовем их: Attack и Damage. Для скрипта Attack добавляем анимацию и в ее свойствах вставляем номер анимации.
![](https://static.tildacdn.com/tild3736-3737-4762-a265-313834326163/_22-min.png)
![](https://static.tildacdn.com/tild3264-6364-4836-a162-396665383639/_23-min.png)
Вот что получается (даем заметки с объяснениями в конце строк):
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)
![](https://static.tildacdn.com/tild6531-6166-4762-a562-303636316464/_24-min.png)
Теперь пишем скрипт 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)
![](https://static.tildacdn.com/tild3664-3266-4638-a536-316266363633/_25-min.png)
Проверяем работу.
![](https://static.tildacdn.com/tild3231-3533-4637-b934-366235623835/_26-min.png)