# Как сделать оружие в Roblox Studio

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

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

<figure><img src="/files/6at7MQ5pTi58JWdQVGLL" alt=""><figcaption><p>ПИСТОЛЕТ</p></figcaption></figure>

{% embed url="<https://www.roblox.com/library/4842197274/Pistol>" %}

<figure><img src="/files/4QEmMsPnNvzyJt5rAGVB" alt=""><figcaption><p>ДРОБОВИК</p></figcaption></figure>

{% embed url="<https://www.roblox.com/library/4842215723/Shotgun>" %}

<figure><img src="/files/o98D5nfF7ShEnpFNze5j" alt=""><figcaption><p>АВТОМАТ</p></figcaption></figure>

{% embed url="<https://www.roblox.com/library/4842207161/Auto-Rifle>" %}

<figure><img src="/files/T2BCtgmVE8SJneH2boJY" alt=""><figcaption><p>ВИНТОВКА</p></figcaption></figure>

{% embed url="<https://www.roblox.com/library/4842212980/Submachine-Gun>" %}

<figure><img src="/files/NjHIHoP9j5rHzyD01Jzb" alt=""><figcaption><p>СНАЙПЕРСКАЯ ВИНТОВКА</p></figcaption></figure>

{% embed url="<https://www.roblox.com/library/4842218829/Sniper-Rifle>" %}

<figure><img src="/files/7fHAe8j3Jquw0YqpSTCF" alt=""><figcaption><p>АРБАЛЕТ</p></figcaption></figure>

{% embed url="<https://www.roblox.com/library/4842204072/Crossbow>" %}

<figure><img src="/files/8dJXfJ2tVxWHYh6AelVr" alt=""><figcaption><p>ГРАНАТОМЕТ</p></figcaption></figure>

{% embed url="<https://www.roblox.com/library/4842201032/Grenade-Launcher>" %}

<figure><img src="/files/ImlXBE6ooE2xT4cgpM9S" alt=""><figcaption><p>ПУСКОВАЯ УСТАНОВКА</p></figcaption></figure>

{% embed url="<https://www.roblox.com/library/4842186817/Rocket-Launcher>" %}

<figure><img src="/files/YtR3Bi21hE8eesn2DH9w" alt=""><figcaption><p>РЕЛЬСОМЕТ</p></figcaption></figure>

{% embed url="<https://www.roblox.com/library/4842190633/Railgun>" %}

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

<figure><img src="/files/DFUNHsBj3bwRb0RfwOSR" alt=""><figcaption></figcaption></figure>

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

<figure><img src="/files/F3YoHw863dWv0sxRtG3F" alt=""><figcaption></figcaption></figure>

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

<figure><img src="/files/nUcIyKR2SZiF23gFeTKK" alt=""><figcaption></figcaption></figure>

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

<figure><img src="/files/jbxNxRDcrz77OPgsMiWo" alt=""><figcaption></figcaption></figure>

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

![](/files/QfVmmsx5FoymCo3ClF4A)![](/files/D5MwESVZsONyGlkgk1Hh)

## **Изменение и тонкая настройка оружия**&#x20;

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

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

<figure><img src="/files/lL5Ln4IKbbTwDAy2lQo9" alt=""><figcaption></figcaption></figure>

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

**Assets ( папка)**&#x20;

* Animations ( Папка ) — хранилище анимаций, используемых в системах вооружения.
* Effects ( Папка )
* Casings ( Папка ) — Хранение всех ресурсов гильзы.
* HitMarks ( Папка ) – хранилище для всех эффектов меток попадания.
* Shots ( Папка ) – Хранение всех эффектов выстрела.
* WeaponsSystemGui ( ScreenGui ) — настройки графического интерфейса системы оружия .&#x20;

**Configuration ( Папка)** — Значения конфигурации для системы вооружения.&#x20;

* SlowZoomWalkEnabled ( BoolValue ) — настройка для управления спринтом .
* SprintEnabled ( BoolValue ) — настройка для управления спринтом .&#x20;

**Libraries ( папка )** — хранит все остальные ModuleScripts , используемые в оружейной системе.&#x20;

**WeaponTypes ( Папка )** — определяет все типы оружия.

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

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

<figure><img src="/files/7RWPSkzJGa1ilQvrcWU1" alt=""><figcaption></figcaption></figure>

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

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

### Рукоять оружия&#x20;

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

### Папка конфигурации&#x20;

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

## Специализированные опции&#x20;

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

### Анимация болтов и звуки&#x20;

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

<figure><img src="/files/CYWVD3ZSo2zEZK2FgXeB" alt=""><figcaption></figcaption></figure>

### Извлечение гильзы пули&#x20;

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

<figure><img src="/files/A2WE2e2aMHJdVOovcAhg" alt=""><figcaption></figcaption></figure>

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

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

<figure><img src="/files/BUorEDL12H3gFwnH4sdb" alt=""><figcaption></figcaption></figure>

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

<figure><img src="/files/DZekPXkoW8P0XQQyaF6o" alt=""><figcaption></figcaption></figure>

**Дульные вспышки**&#x20;

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

<figure><img src="/files/Xn91NdyfYsViTW6Dquzj" alt=""><figcaption></figcaption></figure>

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

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

<figure><img src="/files/HgSR5bHFDAshyBLEiDF8" alt=""><figcaption></figcaption></figure>

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

### Следы частиц&#x20;

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

<figure><img src="/files/Ry6hZixdic8ELwsbHwo8" alt=""><figcaption></figcaption></figure>

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

### Метки попаданий&#x20;

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

<figure><img src="/files/Jp8QVHmmETYQQrNnBmzZ" alt=""><figcaption></figcaption></figure>

**HitMarkEffect ( StringValue ) (необязательно)** — Имя эффекта метки попадания, хранящегося в WeaponsSystem/Assets/Effects/HitMarks ; по умолчанию BulletHole .&#x20;

**AlignHitMarkToNormal ( BoolValue )** (необязательный) — установите значение true , если метка попадания всегда должна располагаться плоско на поверхности, как пулевое отверстие, или false , если метка попадания должна казаться застрявшей в поверхности с направления, откуда прилетел снаряд (например, стрелка). ). По умолчанию верно .

### Взрывающиеся снаряды&#x20;

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

<figure><img src="/files/uCS4IunrYOqsdUKXGwHy" alt=""><figcaption></figcaption></figure>

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

### Зарядное оружие&#x20;

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

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

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

<figure><img src="/files/IBb0KL3UpwmzuklDXehy" alt=""><figcaption></figcaption></figure>

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

### Луки и арбалеты&#x20;

Луки и арбалеты могут включать в себя реалистичную конструкцию тетивы и оружия, а также визуальную стрелу, прикрепленную к тетиве. В дополнение к добавлению потомков модели необходимо применить следующее:&#x20;

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

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

<figure><img src="/files/cHuCUBImw5k6IpbXkyr0" alt=""><figcaption></figcaption></figure>

**LeftString ( Beam ) (необязательно)** — визуальная левая половина строки.

**RightString ( Beam ) (необязательно)** — визуальная правая половина строки.&#x20;

A**rrow ( BasePart ) (необязательно)** — стрелка, которая появляется, когда лук полностью натянут. Обратите внимание, что это только для внешнего вида на луке (фактически выпущенная стрела будет эффектом выстрела , как указано в разделе «Эффекты и звуки снарядов/ударов »).&#x20;

**String1 ( Attachment ) (необязательно**) — Центральная точка строки.&#x20;

**StringLoose ( Attachment ) (необязательно)** — Точка, где должна быть String1, когда лук находится в состоянии покоя.&#x20;

**StringTight ( Attachment ) (необязательно)** — Точка, где должна быть String1 , когда лук полностью натянут.&#x20;

**Arms ( Part ) (необязательно)** — часть, которая просто служит внутренним индикатором того, что руки лука будут анимированы. Это может содержать следующие прямые дочерние элементы:&#x20;

**LeftString0 ( Attachment ) (необязательно)** — Точка, где левая сторона тетивы прикреплена к луку.&#x20;

**RightString0 ( Attachment ) (необязательно)** — Точка, где правая сторона тетивы прикреплена к луку.&#x20;

**LeftLoose ( Attachment ) (необязательно)** — точка, где должна быть LeftString0 , когда лук находится в состоянии покоя.&#x20;

**RightLoose ( Attachment ) (необязательно)** — точка, где RightString0 должен быть, когда лук находится в состоянии покоя.&#x20;

**LeftTight ( Attachment ) (необязательно)** — точка, где должен быть LeftString0 , когда лук полностью натянут.&#x20;

**RightTight ( Attachment ) (необязательно)** — точка, где должен быть RightString0, когда лук полностью натянут.&#x20;

**\[SpecialMesh] ( SpecialMesh ) (необязательный)** — часть лука, которая фактически будет изгибаться при натягивании лука. Обратите внимание, что вы должны указать следующие четыре объекта Vector3Value , чтобы сделать эту анимацию.&#x20;

**LooseOffset ( Vector3Value ) (необязательно)** — Смещение SpecialMesh, когда лук находится в состоянии покоя.&#x20;

**TightOffset ( Vector3Value ) (необязательно)** — Смещение SpecialMesh , когда лук полностью натянут.&#x20;

**LooseScale ( Vector3Value ) (необязательно)** — Масштаб SpecialMesh, когда лук находится в состоянии покоя.&#x20;

**TightScale ( Vector3Value ) (необязательно)** — Масштаб SpecialMesh , когда лук полностью натянут.

### Большой сенсорный экран&#x20;

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

* Кнопка прицеливания ( Кнопка изображения )&#x20;
* Кнопка огня ( Кнопка изображения )&#x20;

### Маленький сенсорный экран&#x20;

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

* Кнопка прицеливания ( Кнопка изображения )&#x20;
* Кнопка огня ( Кнопка изображения )&#x20;

### Индикатор направления&#x20;

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

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

<figure><img src="/files/QlhX9W29MVIZ08mCDjtr" alt=""><figcaption></figcaption></figure>

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

```lua
self.DirectionalIndicatorGuiManager:ActivateDirectionalIndicator(indicatorName, worldPos)
```

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

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

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

```lua
DamageBillboardHandler:ShowDamageBillboard(damage, adornmentPart)
```

### Плечевая камера&#x20;

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

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

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

<figure><img src="/files/cbGM6Ku1NVFaZDuyWi5C" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Более подробную документацию по созданию оружия можно посмотреть на официальном сайте Роблокс - <https://create.roblox.com/docs/resources/weapons-kit>
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://lahmeneffa.gitbook.io/roblox/uroki-roblox-studio/kak-sdelat-oruzhie-v-roblox-studio.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
