Как сделать оружие в Роблокс Студио
Проще всего сделать оружие на основе уже существующего, лицензированного оружия. Его можно будет взять за основу и изменить модель (внешний вид) и характеристики (скорострельность, прицел, поведение камеры, анимацию выстрела и т.д.). Лицензированное оружие работает на основе снарядов с камерой через плечо, при этом если вы установите достаточно высокую скорость снарядов и малый урон, сможете имитировать оружие с лучевой передачей (сделать лазерную пушку).
В первую очередь выберите одно из предоставленных ниже оружий (кликни по картинке):
На странице оружия нажмите зеленую кнопку «Get» и подтвердите транзакцию
Запустите Roblox Studio, откройте вкладку VIEW и активируйте инструменты ToolBox, Explorer и Properties
В панели ToolBox переключитесь на вторую вкладку и нажмите ЛКМ по модели оружия. После чего подтвердите добавление и нажмите « Да» , если хотите, чтобы игроки начали с оружием в рюкзаке, или нажмите « Нет» , чтобы просто поместить оружие в трехмерный мир в качестве предмета
Можете на этом этапе запустить игру и убедиться в том что у Вас получилось добавить оружие в игру.
Если хотите создать более интересное оружие, воспользуйтесь встроенным поиском в панели ToolBox. Переключитесь на первую вкладку и введите в поисковую строку «Weapon» после чего добавьте его в игру аналогичным образом.
Изменение и тонкая настройка оружия
Структура системных папок
Папка WeaponsSystem — это единая папка, содержащая активы, конфигурации и сценарии, которые приводят в действие все одобренное оружие. Если он расположен в ServerScriptService , он переопределяет любые эквивалентные папки WeaponsSystem , которые могут находиться в отдельном оружии.
Папка WeaponsSystem содержит следующие экземпляры :
- Assets ( папка)
-
- Animations ( Папка ) — хранилище анимаций, используемых в системах вооружения.
- Effects ( Папка )
- Casings ( Папка ) — Хранение всех ресурсов гильзы.
- HitMarks ( Папка ) – хранилище для всех эффектов меток попадания.
- Shots ( Папка ) – Хранение всех эффектов выстрела.
- WeaponsSystemGui ( ScreenGui ) — настройки графического интерфейса системы оружия .
- Configuration ( Папка) — Значения конфигурации для системы вооружения.
-
- SlowZoomWalkEnabled ( BoolValue ) — настройка для управления спринтом .
- SprintEnabled ( BoolValue ) — настройка для управления спринтом .
- Libraries ( папка ) — хранит все остальные ModuleScripts , используемые в оружейной системе.
- WeaponTypes ( Папка ) — определяет все типы оружия.
Модель оружия
Каждое оружие содержит модель , состоящую из одной или нескольких базовых частей для формирования физического оружия. Один из них должен быть установлен как PrimaryPart модели .
Модель также включает в себя следующие важные потомки, которые могут быть родителями одной из базовых частей модели :
- 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 .
Более подробную документацию по созданию оружия можно посмотреть на официальном сайте Роблокс.