Как сделать оружие в Роблокс Студио

Проще всего сделать оружие на основе уже существующего, лицензированного оружия. Его можно будет взять за основу и изменить модель (внешний вид) и характеристики (скорострельность, прицел, поведение камеры, анимацию выстрела и т.д.). Лицензированное оружие работает на основе снарядов с камерой через плечо, при этом если вы установите достаточно высокую скорость снарядов и малый урон, сможете имитировать оружие с лучевой передачей (сделать лазерную пушку).

В первую очередь выберите одно из предоставленных ниже оружий (кликни по картинке):

На странице оружия нажмите зеленую кнопку «Get» и подтвердите транзакцию

Оружие роблокс

Запустите Roblox Studio, откройте вкладку VIEW и активируйте инструменты ToolBox, Explorer и Properties

Как сделать экран смерти в Роблокс

В панели ToolBox переключитесь на вторую вкладку и нажмите ЛКМ по модели оружия. После чего подтвердите добавление и нажмите « Да» , если хотите, чтобы игроки начали с оружием в рюкзаке, или нажмите « Нет» , чтобы просто поместить оружие в трехмерный мир в качестве предмета

Оружие роблокс

Можете на этом этапе запустить игру и убедиться в том что у Вас получилось добавить оружие в игру.

Как сделать оружие в Роблокс

Если хотите создать более интересное оружие, воспользуйтесь встроенным поиском в панели ToolBox. Переключитесь на первую вкладку и введите в поисковую строку «Weapon» после чего добавьте его в игру аналогичным образом.

Изменение и тонкая настройка оружия

Структура системных папок

Папка WeaponsSystem — это единая папка, содержащая активы, конфигурации и сценарии, которые приводят в действие все одобренное оружие. Если он расположен в ServerScriptService , он переопределяет любые эквивалентные папки WeaponsSystem , которые могут находиться в отдельном оружии.

WeaponsSystem

Папка WeaponsSystem содержит следующие экземпляры :

  • Assets ( папка)
    • Animations ( Папка ) — хранилище анимаций, используемых в системах вооружения.
    • Effects ( Папка )
    • Casings ( Папка ) — Хранение всех ресурсов гильзы.
    • HitMarks ( Папка ) – хранилище для всех эффектов меток попадания.
    • Shots ( Папка ) – Хранение всех эффектов выстрела.
    • WeaponsSystemGui ( ScreenGui ) — настройки графического интерфейса системы оружия .
  • Configuration ( Папка) — Значения конфигурации для системы вооружения.
    • SlowZoomWalkEnabled ( BoolValue ) — настройка для управления спринтом .
    • SprintEnabled ( BoolValue ) — настройка для управления спринтом .
  • Libraries ( папка ) — хранит все остальные ModuleScripts , используемые в оружейной системе.
  • WeaponTypes ( Папка ) — определяет все типы оружия.

Модель оружия

Каждое оружие содержит модель , состоящую из одной или нескольких базовых частей для формирования физического оружия. Один из них должен быть установлен как PrimaryPart модели .

Weapon-Model-BaseParts

Модель также включает в себя следующие важные потомки, которые могут быть родителями одной из базовых частей модели :

  • TipAttachment — вложение , положение которого на родительском элементе BasePart определяет, откуда выходят пули/снаряды.
  • HandleAttachment — вложение , положение которого на родительском элементе BasePart определяет место приваривания ручки .
  • Fired (необязательный) — Звук , который воспроизводится при выстреле из оружия.
  • Reload (необязательный) — Звук , который воспроизводится при перезарядке оружия.

Рукоять оружия

Часть Handle определяет, где персонаж игрока держит оружие. Это должен быть Part , он должен называться Handle и быть прямым дочерним элементом оружия (инструмента).

Папка конфигурации

В папке конфигурации вы можете настроить значения для поведения оружия (скорострельность, режим огня, перезарядка, урон, скорость пули, отдачу и т.д.)

Специализированные опции

Вы можете добавить/изменить следующие параметры для любого оружия. Эти настройки требуют изменения либо Модели оружия , либо Конфигурации оружия , либо того и другого. Некоторые конфигурации зависят от других, таких как Muzzle Particles , которые требуют необходимых дочерних элементов для Projectile/Hit Effects and Sounds .

Анимация болтов и звуки

Затвор оружия — это часть, которая двигается вперед и назад при каждом выстреле.

Bolt BasePart , который перемещается при выстреле из оружия.
BoltMotor Motor6D используется для анимации болта. Убедитесь, что Part0 двигателя установлен на PrimaryPart модели оружия, а Part1 — на часть Bolt .
BoltMotorStart Приспособление , положение которого на родительском элементе BasePart определяет положение болта в состоянии покоя.
BoltMotorTarget Приспособление , положение которого на родительском элементе BasePart определяет место анимации болта при стрельбе.
BoltOpenSound Звук , который воспроизводится при открытии затвора. необязательный
BoltCloseSound Звук , который воспроизводится, когда задвижка закрывается. необязательный

Извлечение гильзы пули

Оружие может включать физические гильзы от пуль, которые выбрасываются при выстреле и падают на землю.

CasingEjectPoint Приспособление , положение которого на родительском элементе BasePart определяет место, где должны высовываться гильзы. Обратите внимание, что его ориентация определяет направление выдвижения корпуса.

Эффекты и звуки снарядов/ударов

Вы можете настроить физические снаряды для любого оружия, а также звуки , лучи и излучатели частиц для эффектов попадания и других специальных эффектов.

Элемент Описание По умолчанию
ShotEffect Имя эффекта кадра, хранящегося в Assets / Effects / Shots системной папки .
ShouldMovePart Установите значение true , если ShotEffect оружия должен двигаться вместе со снарядом, или значение false, если нет. Вы должны установить это значение только в том случае, если есть видимый объект, который движется с каждым выстрелом, например стрела или ракета. ЛОЖЬ
BeamFadeTime Время, которое требуется Beam0 или Beam1 ( см. ниже ), чтобы исчезнуть после того, как пуля/снаряд во что-то попадает. По умолчанию ручное затухание не будет применяться кодом. 0
BeamWidth0 Толщина Beam0 или Beam1 в Attachment0 ( см. ниже ). 1,5
BeamWidth1 Толщина Beam0 или Beam1 в Attachment1 ( см. ниже ). 1,8
NumHitParticles Количество частиц, которые будет испускать эмиттер HitParticles ( см. ниже ). 3
HitParticlesUsePartColor Установите значение true, если хотите, чтобы частицы попадания были цвета поверхности попадания; false , если вы хотите, чтобы частицы удара не меняли цвет. истинный

Потомки указанного ShotEffect , отмеченного в предыдущем разделе.

Flying Звук , который воспроизводится во время полета пули/снаряда. необязательный
Beam0 Первый слот для ведомого Луча за пулей/снарядом. Не забудьте установить Attachment0 и Attachment1 . необязательный
Beam1 Второй слот для ведомого Луча за пулей/снарядом. Не забудьте установить Attachment0 и Attachment1 . необязательный
Attachment0 Крепление , положение которого на родительском элементе BasePart определяет заднюю часть замыкающих балок; обязательно установите Beam.Attachment0 на Beam0 и Beam1 на это. необязательный
Attachment1 Крепление , положение которого на родительском элементе BasePart определяет переднюю часть замыкающих балок; обязательно установите Beam.Attachment1 на Beam0 и Beam1 на это. необязательный
TrailParticles ParticleEmitter является прямым дочерним элементом Attachment0 ; это будет испускаться во время движения пули/снаряда. необязательный
LeadingParticles ParticleEmitter является прямым дочерним элементом Attachment1 ; это будет испускаться во время движения пули/снаряда. необязательный
HitEffect Приложение , положение которого будет установлено на Beam.Attachment1 Beam0при попадании пули/снаряда. Вы должны указать Beam0 и его вложения, чтобы это работало правильно. необязательный
HitSound Sound является прямым потомком HitEffect ; воспроизводится при попадании пули/снаряда. необязательный
HitParticles Sound является прямым потомком HitEffect ; излучает при попадании пули/снаряда. необязательный
[ProjectilePart] Любая часть или MeshPart , которую вы хотите отобразить как физический снаряд. Убедитесь, что для параметра ShouldMovePart , отмеченного в предыдущем разделе, установлено значение true , если здесь есть видимый объект.

Дульные вспышки

Эта опция создает эффект вспышки луча при выстреле из оружия.

Потомки модели:

  • MuzzleFlash0 ( Attachment ) — Используется для указания одной стороны дульного вспышки. Должность не имеет значения.
  • MuzzleFlash1 ( Attachment ) — используется для указания противоположной стороны дульного вспышки. Должность не имеет значения.
  • MuzzleFlash ( Beam ) — обязательно установите для Attach0 значение MuzzleFlash0 , а для Attachment1 значение MuzzleFlash1 .

Потомки конфигурации:

  • MuzzleFlashTime ( NumberValue ) (необязательный) — продолжительность времени, в течение которого будет отображаться дульное пламя; по умолчанию 0,03 .
  • MuzzleFlashRotation0 ( NumberValue ) (необязательно) — Минимальное вращение дульного луча; по умолчанию -math.pi .
  • MuzzleFlashRotation1 ( NumberValue ) (необязательно) — максимальное вращение дульного луча; по умолчанию это math.pi .
  • MuzzleFlashSize0 ( NumberValue ) (необязательный) — Минимальный размер дульного вспышки; по умолчанию 1 .
  • MuzzleFlashSize1 ( NumberValue ) (необязательный) — Максимальный размер дульного вспышки; по умолчанию 1 .

Следы частиц

Эта опция создает след различной длины от оружия до точки попадания снаряда.

Потомки конфигурации:

  • TrailLength ( NumberValue ) (необязательно) — Длина следа за пулей/снарядом; значение по умолчанию равно nil , что означает, что длина маршрута вместо этого будет рассчитываться с использованием TrailLengthFactor .
  • TrailLengthFactor ( NumberValue ) (необязательно) — Длина следа будет установлена ​​на это значение, умноженное на расстояние, пройденное пулей/снарядом в последнем кадре; по умолчанию 1 . Обратите внимание, что это будет переопределено, если вы включите TrailLength .
  • ShowEntireTrailUntilHit ( BoolValue ) (необязательно) — установите значение true , чтобы визуализировать след от наконечника оружия до места, где находится снаряд; это переопределит как TrailLength , так и TrailLengthFactor , и след исчезнет только после того, как снаряд во что-то войдет. Установите значение false , чтобы использовать одну из двух вышеперечисленных опций для расчета длины следа. Значение по умолчанию — ложь .

Метки попаданий

Это визуальное дополнение появляется на поверхности, куда попадают снаряды, и полезно для стрел, пулевых отверстий, подпалин и т. д.

Потомки конфигурации:

  • HitMarkEffect ( StringValue ) (необязательно) — Имя эффекта метки попадания, хранящегося в WeaponsSystem/Assets/Effects/HitMarks ; по умолчанию BulletHole .
  • AlignHitMarkToNormal ( BoolValue ) (необязательный) — установите значение true , если метка попадания всегда должна располагаться плоско на поверхности, как пулевое отверстие, или false , если метка попадания должна казаться застрявшей в поверхности с направления, откуда прилетел снаряд (например, стрелка). ). По умолчанию верно .

Взрывающиеся снаряды

Снаряды могут включать в себя объект взрыва, который наносит урон персонажам игроков в области вокруг точки удара.

Потомки конфигурации:

  • ExplodeOnImpact ( BoolValue ) (необязательно) — установите значение true, если вы хотите, чтобы пули/снаряды для оружия взрывались при ударе, в противном случае — значение false . Значение по умолчанию — ложь .
  • BlastRadius ( NumberValue ) (необязательно) — BlastRadius взрыва; по умолчанию 8 .
  • BlastPressure ( NumberValue ) (необязательно) — BlastPressure взрыва; по умолчанию 10000 .
  • BlastDamage ( NumberValue ) (необязательно) — урон, нанесенный вещам в центре взрыва. Обратите внимание, что взрыв наносит меньше урона, чем дальше от центра взрыва находятся пораженные объекты. По умолчанию 100 .

Зарядное оружие

Заряжающееся оружие, такое как Рейльсотрон, должно заряжаться между выстрелами, прежде чем оно снова сможет стрелять.

Потомки модели:

  • Charging ( Звук ) (опционально) — воспроизводится во время зарядки оружия.
  • Discharging ( звук ) (необязательно) — воспроизводится во время разрядки оружия, например, если вы только частично зарядите оружие и отпустите кнопку выстрела.
  • ChargeComplete ( Звук ) (необязательно) — воспроизводится, когда оружие полностью заряжено.
  • DischargeComplete ( Звук ) (необязательно) — воспроизводится, когда оружие полностью разряжено.
  • ChargeGlow ( BasePart ) (необязательно) — этот объект будет становиться менее прозрачным по мере зарядки оружия, так что он будет полностью непрозрачным при 100% заряде.
  • ChargeCompleteParticles ( ParticleEmitter ) (необязательно) — испускается, когда оружие закончило зарядку. Этот эмиттер может быть дочерним элементом любой модели BasePart или дочерним элементом Attachment внутри BasePart .
  • DischargeCompleteParticles ( ParticleEmitter ) (необязательно) — испускается, когда оружие полностью разряжается. Этот эмиттер может быть дочерним элементом любой модели BasePart или дочерним элементом Attachment внутри BasePart .
  • ChargingParticles ( ParticleEmitter ) (необязательно) — испускает во время зарядки оружия. Вы можете включить несколько излучателей с таким именем, и каждый из них будет излучать во время зарядки. Этот эмиттер может быть дочерним элементом любой модели BasePart или дочерним элементом Attachment внутри BasePart .

Потомки конфигурации:

  • ChargeRate ( NumberValue ) — Скорость, с которой оружие будет заряжаться. Это значение необходимо указать, чтобы указать, что оружие использует зарядку.
  • DischargeRate ( NumberValue ) (необязательно) — скорость, с которой оружие будет разряжаться; по умолчанию 0 , что означает, что оружие вообще не будет стрелять.
  • ChargePassively ( BoolValue ) (необязательный) — установите значение true, если вы хотите, чтобы оружие пассивно заряжалось, чтобы оно стреляло мгновенно при нажатии, или false , если вы хотите щелкнуть / коснуться, чтобы зарядить оружие и стрелять, как только будет достигнут полный заряд. . Значение по умолчанию — ложь .
  • ChargingParticlesRatePerCharge ( IntValue ) (необязательно) — количество частиц, которые будут испускаться из всех эмиттеров ChargingParticles , умноженное на текущий заряд оружия. Значение по умолчанию — 20 , что означает, что если заряд оружия составляет 10%, каждый эмиттер ChargingParticles будет испускать 2 частицы (20×0,1), а если заряд оружия равен 90%, каждый эмиттер будет испускать 18 частиц (20×0,9).
  • FireDischarge ( NumberValue ) (необязательно) — количество заряда, которое оружие потеряет после полностью заряженного выстрела; по умолчанию 1 .
  • NumChargeCompleteParticles ( IntValue ) (необязательный) — количество частиц, которые излучатель -ChargeCompleteParticles будет испускать после того, как оружие будет полностью заряжено. По умолчанию 25 .
  • NumDischargeCompleteParticles ( IntValue ) (необязательный) — количество частиц, которые излучатель -DischargeCompleteParticles будет испускать, когда оружие полностью разряжено. По умолчанию 25 .

Луки и арбалеты

Луки и арбалеты могут включать в себя реалистичную конструкцию тетивы и оружия, а также визуальную стрелу, прикрепленную к тетиве.

В дополнение к добавлению потомков модели необходимо применить следующее:

  • Превратите оружие в зарядное оружие . Например, добавьте необходимый ChargeRate в конфигурацию оружия , который указывает, как быстро вытягивается нить. Кроме того, рассмотрите возможность добавления дополнительных потомков к модели оружия, таких как звук зарядки для тетивы/рук, которые оттягиваются назад.
  • Установите для параметра WeaponType значение BowWeapon , как указано в структуре оружия .

Потомки модели:

  • LeftString ( Beam ) (необязательно) — визуальная левая половина строки.
  • RightString ( Beam ) (необязательно) — визуальная правая половина строки.
  • Arrow ( BasePart ) (необязательно) — стрелка, которая появляется, когда лук полностью натянут. Обратите внимание, что это только для внешнего вида на луке (фактически выпущенная стрела будет эффектом выстрела , как указано в разделе «Эффекты и звуки снарядов/ударов »).
  • String1 ( Attachment ) (необязательно) — Центральная точка строки.
  • StringLoose ( Attachment ) (необязательно) — Точка, где должна быть String1, когда лук находится в состоянии покоя.
  • StringTight ( Attachment ) (необязательно) — Точка, где должна быть String1 , когда лук полностью натянут.
  • Arms ( Part ) (необязательно) — часть, которая просто служит внутренним индикатором того, что руки лука будут анимированы. Это может содержать следующие прямые дочерние элементы:
  • LeftString0 ( Attachment ) (необязательно) — Точка, где левая сторона тетивы прикреплена к луку.
  • RightString0 ( Attachment ) (необязательно) — Точка, где правая сторона тетивы прикреплена к луку.
  • LeftLoose ( Attachment ) (необязательно) — точка, где должна быть LeftString0 , когда лук находится в состоянии покоя.
  • RightLoose ( Attachment ) (необязательно) — точка, где RightString0 должен быть, когда лук находится в состоянии покоя.
  • LeftTight ( Attachment ) (необязательно) — точка, где должен быть LeftString0 , когда лук полностью натянут.
  • RightTight ( Attachment ) (необязательно) — точка, где должен быть RightString0, когда лук полностью натянут.
  • [SpecialMesh] ( SpecialMesh ) (необязательный) — часть лука, которая фактически будет изгибаться при натягивании лука. Обратите внимание, что вы должны указать следующие четыре объекта Vector3Value , чтобы сделать эту анимацию.
  • LooseOffset ( Vector3Value ) (необязательно) — Смещение SpecialMesh, когда лук находится в состоянии покоя.
  • TightOffset ( Vector3Value ) (необязательно) — Смещение SpecialMesh , когда лук полностью натянут.
  • LooseScale ( Vector3Value ) (необязательно) — Масштаб SpecialMesh, когда лук находится в состоянии покоя.
  • TightScale ( Vector3Value ) (необязательно) — Масштаб SpecialMesh , когда лук полностью натянут.

Большой сенсорный экран

LargeTouchscreen — это рамка , содержащая кнопки, отображаемые на больших сенсорных экранах. У LargeTouchscreen есть следующие потомки:

  • Кнопка прицеливания ( Кнопка изображения )
  • Кнопка огня ( Кнопка изображения )

Маленький сенсорный экран

SmallTouchScreen — это фрейм , содержащий кнопки, которые отображаются на небольших сенсорных экранах. У SmallTouchscreen есть следующие потомки:

  • Кнопка прицеливания ( Кнопка изображения )
  • Кнопка огня ( Кнопка изображения )

Индикатор направления

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

Чтобы создать новый индикатор, добавьте новый индикаторный кадр в WeaponsSystemGui/ScalingElements/DirectionalIndicators со следующей структурой:

Имя Тип экземпляра Описание
[UIAspectRationConstraint] UIAspectRatioConstraint
[ImageLabel] Метка изображения Изображение указателя поворота. Настройка поворота изображения в Studio может потребоваться, если вы не загрузите изображение так, чтобы оно было обращено вниз и вокруг него было мало или совсем не было пустого пространства.
Эта метка изображения также должна содержать собственный
UIAspectRatioConstraint .
[Configuration] Конфигурация Содержит необязательные свойства для настройки. Дополнительную информацию см. в разделе Конфигурация индикатора

После создания вы можете активировать индикатор с помощью следующей команды внутри WeaponsSystem/Libraries/WeaponsGui, где индикаторName — это строковое имя индикатора, который нужно активировать, а worldPos — это позиция в мире, на которую должен указывать индикатор направления:

self.DirectionalIndicatorGuiManager:ActivateDirectionalIndicator(indicatorName, worldPos)

Информация о повреждений

Рекламный щит повреждений используется для отображения небольших чисел над головой персонажа, когда он поврежден. Они будут отображаться только для игрока, который повредил персонажа другого игрока, а не для игроков-наблюдателей.

Рекламные щиты с повреждениями обрабатываются в WeaponsSystem/Libraries/DamageBillboardHandler и могут быть активированы из любого кода на стороне клиента следующим образом, где повреждение — это количество нанесенного урона, а украшение — часть, на которой можно украсить рекламный щит, например, голова жертвы:

DamageBillboardHandler:ShowDamageBillboard(damage, adornmentPart)

Плечевая камера

Плечевая камера — это камера от третьего лица, которая смотрит через правое плечо персонажа игрока. Чтобы настроить камеру на плече, измените переменные под комментарием — Параметры конфигурации (константы) в функции ShoulderCamera.new() в WeaponsSystem/Libraries/ShoulderCamera . Вы можете изменить такие вещи, как поле зрения, смещение от персонажа, скорость ходьбы во время бега или масштабирования и т. д.

Спринт и управление масштабированием

По умолчанию система оружия добавляет возможность «спринта», поэтому игроки могут бежать, удерживая клавишу Shift , полностью нажимая на динамический стик (мобильный) или полностью нажимая на левый джойстик (геймпад). Если вы хотите отключить спринт, установите для параметра SprintEnabled в WeaponsSystem / Configuration значение false .

Система также снижает скорость игрока , когда он прицеливается/приближается, но вы можете отключить это поведение, установив для параметра SlowZoomWalkEnabled значение false .

Более подробную документацию по созданию оружия можно посмотреть на официальном сайте Роблокс.