Robloxは、競争型の戦闘ベースのゲームを作成するのに役立つ以下のプレハブ武器を提供しています。コアシステムは、肩越しのカメラを持つ弾道ベースの武器を特徴としており、弾道の速度を十分に高く設定することで、レーザーガンのようなレイキャスティング武器をシミュレートできます。

ゲームでプレハブ武器を使用するには:
武器のアイテムページで、モデルを取得ボタンをクリックし、取引を確認します。
スタジオで、ツールボックスを開き、インベントリセクションを選択します。

武器を見つけてクリックし、場所に追加します。ツールをスターターパックに入れるかどうかのプロンプトが表示されたら、プレイヤーがバックパックに武器を持ってスタートする場合ははいをクリックし、単に3Dワールドに武器をピックアップとして配置する場合はいいえをクリックします。
これは初めてプレハブ武器を持ち込む場合、WeaponsSystemフォルダーをServerScriptServiceに移動して、ゲーム内のすべてのプレハブ武器のための統一されたシステムフォルダーとして機能させます。

システムフォルダー構造
WeaponsSystemフォルダーは、ゲーム内のすべてのプレハブ武器を動かすアセット、設定、スクリプトを含む統一されたフォルダーです。ServerScriptServiceにある場合、個々の武器内に存在する同等のWeaponsSystemフォルダーを上書きします。

WeaponsSystemフォルダー内では、さまざまな側面が以下のModuleScriptsによって制御されます:
| 側面 | 主に処理される場所... |
|---|---|
| 武器の機能 |
|
| 肩越しカメラ |
|
| 武器GUI |
|
武器構造
プレハブ武器はツールであり、プレイヤーのバックパックに表示される名前が付けられています。各武器は、類似の階層で構成されています。
武器タイプ
WeaponType StringValueは、WeaponsSystem/WeaponTypesフォルダー内の武器に対応するModuleScriptです。2つの基本値はBulletWeaponとBowWeaponです。
武器モデル
各武器は、物理的な武器を形成する1つ以上のBasePartsで構成されたModelを含みます。これらのうちの1つは、モデルのPrimaryPartとして設定する必要があります。

モデルには、モデルのBasePartsの1つに親子関係を持つ以下の重要な子孫も含まれます:
- 特殊オプションのための追加の子孫。
設定
Configurationフォルダーには、武器の動作に関する特定の「値」タイプが含まれています。デフォルトに加えて、適用可能な場合は特殊オプションのための追加の設定項目を追加できます。

以下は、基本設定とそのデフォルト値です:
| 項目 | 説明 | デフォルト |
|---|---|---|
| AimTrack | Assets/Animationsのシステムフォルダー内のエイムアニメーショントラックの名前。 | RifleAim |
| AimZoomTrack | Assets/Animationsのシステムフォルダー内のエイムズーミングアニメーショントラックの名前。 | RifleAimDownSights |
| AmmoCapacity | プレイヤーがリロードする前に各「弾薬クリップ」に含まれるショットの数。弾薬は無限であり、この値はプレイヤーが持っている弾薬の量を指定しません。 | 30 |
| BulletSpeed | 発射されたときの弾丸/弾の移動速度。この値を20000のような非常に高い値に設定すると、レーザーガンのようなレイキャスティング武器をシミュレートします。 | 1000 |
| BurstShotCooldown | バースト内の各ショット間の時間;FireModeをBurstに設定した場合のみ重要です。 | ShotCooldownの値 |
| FiredPlaybackSpeedRange | 武器のFiredサウンドのピッチが変動できる範囲。これを0に設定すると、常に同じピッチで再生されます。 | 0.1 |
| FireMode | Semiautomatic(クリック/タップごとに1ショット)、Automatic(連続発射)、またはBurst(クリック/タップごとにNumBurstShotsに等しいショットのバースト)から選択します。 | Semiautomatic |
| FullDamageDistance | ショットがフルダメージを与える最大距離。この距離を超えて当たったものは、ZeroDamageDistanceに近づくにつれて、徐々にダメージが減少します。 | 1000 |
| GravityFactor | 重力が各弾丸/弾にどの程度影響を与えるか。たとえば、クロスボウのこの値は1で、矢が飛行中に弧を描くためですが、ロケットランチャーのこの値は0で、推進されたロケットは真っ直ぐに飛ぶためです。 | 0 |
| HasScope | Weapons GUIで指定されたスコープを使用したい場合はtrueに設定します。 | false |
| HitDamage | 各直接ヒットが与えるダメージの量。 | 10 |
| MaxDistance | 弾丸/弾が消える前に移動できる最大距離。 | 2000 |
| MaxSpread | 武器の最大散布量。 | MinSpreadの値 |
| MinSpread | 武器の最小散布量。 | 0 |
| NumBurstShots | クリック/バーストごとのショット数;FireModeをBurstに設定した場合のみ重要です。 | 3 |
| NumProjectiles | クリック/タップを1回行ったときに同時に発射される弾丸/弾の数。これは、ショットガンのように同時に複数の弾丸を発射する武器に便利です。この値に関係なく、1ショットは常に正確に1つの弾薬を使用します。 | 1 |
| RecoilDecay | 反動の減衰倍率;発射後に反動が減少する速度を本質的に示します。 | 0.825 |
| RecoilDelayTime | 発射/クリック後に反動がカメラに追加されるまでの待機時間。 | 0.07 |
| RecoilMax | 各ショットに追加される最大反動。 | 0.5 |
| RecoilMin | 各ショットに追加される最小反動。 | 0.05 |
| ReloadAnimation | Assets/Animationsのシステムフォルダー内のリロードアニメーショントラックの名前。 | RifleReload |
| ShotCooldown | クリック間の最小待機時間。FireModeがAutomaticの武器の場合、これは発射ボタンを押している間のショット間の時間でもあります。 | 0.1 |
| StartupTime | 武器を装備した後、プレイヤーが発射できるまでの時間の長さ。これにより、プレイヤーが異なる武器から連続して単一のショットを発射するのを防ぎます。 | 0.2 |
| TotalRecoilMax | 累積反動の最大合計。武器の現在の反動はこの値を超えることはありません。 | 2 |
| ZeroDamageDistance | この距離でまたはそれを超えて当たったものはダメージを受けません。 | 10000 |
特殊オプション
任意の武器に対して以下のオプションを追加/変更できます。これらのカスタマイズには、武器のModel、武器のConfiguration、またはその両方を変更する必要があります。一部の設定は他の設定に依存しており、たとえばマズルパーティクルは弾道/ヒット効果とサウンドに必要な子供を必要とします。
ボルトアニメーションとサウンド
武器のボルトは、発射されるたびに前後に動く部分です。
武器の設定フォルダーの子孫:
- ActionOpenTimeoptional— ボルトが開く位置にアニメーションするのにかかる時間。デフォルトは0.025。
- ActionCloseTimeoptional— ボルトが閉じる位置にアニメーションするのにかかる時間。デフォルトは0.075。
排出された弾薬カシング
武器には、発射時に排出されて地面に落ちる物理的な弾薬カシングを含めることができます。
武器の武器モデルの子孫:
弾道/ヒット効果とサウンド
任意の武器に物理的な弾道を設定でき、Sounds、Beams、およびヒット効果やその他の特殊効果のためのParticleEmittersを設定できます。
武器の設定フォルダーの子孫:
- ShouldMovePartoptional— 武器のShotEffectが弾道と共に移動する場合はtrueに、そうでない場合はfalseに設定します。弾道と共に移動する可視オブジェクト(矢やロケットなど)がある場合にのみ、これをtrueに設定する必要があります。デフォルトはfalse。
- BeamFadeTimeoptional— 弾丸/弾が何かに当たった後、Beam0またはBeam1(以下参照)がフェードするのにかかる時間。デフォルトでは、コードによって手動でフェードは適用されません。デフォルトは0。
- BeamWidth0optional— Attachment0(以下参照)でのBeam0またはBeam1の厚さ。デフォルトは1.5。
- BeamWidth1optional— Attachment1(以下参照)でのBeam0またはBeam1の厚さ。デフォルトは1.8。
- NumHitParticlesoptional— HitParticles(以下参照)エミッターが放出する粒子の数。デフォルトは3。
- HitParticlesUsePartColoroptional— ヒット粒子をヒットした表面の色にしたい場合はtrueに、色を変えたくない場合はfalseに設定します。デフォルトはtrue。
上記のセクションで指定されたShotEffectの子孫:
- Attachment0optional— トレイリングビームの後ろを決定する親BasePart上のAttachment;Beam0とBeam1の両方のBeam.Attachment0をこれに設定することを確認してください。
- Attachment1optional— トレイリングビームの前を決定する親BasePart上のAttachment;Beam0とBeam1の両方のBeam.Attachment1をこれに設定することを確認してください。
- HitEffectoptional— 弾丸/弾が何かに当たったときにBeam.Attachment1のBeam0に設定されるAttachment。これが正しく機能するためには、Beam0とそのアタッチメントを指定する必要があります。
マズルパーティクル
このオプションは、武器のTipAttachment Attachmentから発射時に指定されたParticleEmitterからパーティクルを放出します。武器の設定フォルダーの子孫には以下が含まれます:
- ShotEffect — WeaponsSystem/Assets/Effects/Shotsに保存されているショット効果の名前。このショット効果の子として、MuzzleParticlesという名前のParticleEmitterアセットを含めます。
- NumMuzzleParticlesoptional— 放出されるマズルパーティクルの数。デフォルトは50。
マズルフラッシュ
このオプションは、武器が発射されたときにBeamフラッシュ効果を作成します。
武器の武器モデルの子孫:
- MuzzleFlash0 — マズルフラッシュの一方の側を指定するために使用されるAttachment。位置は重要ではありません。
- MuzzleFlash1 — マズルフラッシュの反対側を指定するために使用されるAttachment。位置は重要ではありません。
- MuzzleFlash — マズルフラッシュ効果のためのBeam。ビームのAttachment0をMuzzleFlash0に、Attachment1をMuzzleFlash1に設定することを確認してください。
武器の設定フォルダーの子孫:
- MuzzleFlashTimeoptional— マズルフラッシュが表示される時間の長さ。デフォルトは0.03。
- MuzzleFlashSize0optional— マズルフラッシュの最小サイズ。デフォルトは1。
- MuzzleFlashSize1optional— マズルフラッシュの最大サイズ。デフォルトは1。
パーティクルトレイル
このオプションは、武器から弾道の衝突点までの長さが異なるトレイルを作成します。武器の設定フォルダーの子孫には以下が含まれます:
- TrailLengthoptional— 弾丸/弾の後ろのトレイルの長さ;デフォルトはnilで、トレイルの長さはTrailLengthFactorを使用して計算されます。
- TrailLengthFactoroptional— 指定された場合、トレイルの長さはこの値に弾丸/弾が前のフレームで移動した距離を掛けたものに設定されます;デフォルトは1。この値を含めると、TrailLengthが上書きされます。
- ShowEntireTrailUntilHitoptional— 武器の先端から弾道が衝突するまでの間、トレイルを表示するにはtrueに設定します;これにより、TrailLengthとTrailLengthFactorの両方が上書きされ、トレイルは弾道が何かに当たるまで消えません。falseに設定すると、上記の2つのオプションのいずれかを使用してトレイルの長さを計算します。デフォルトはfalse。
ヒットマーク
この視覚的な追加は、弾道が当たった表面に表示され、矢印、弾痕、焦げ跡などに便利です。武器の設定フォルダーの子孫には以下が含まれます:
- HitMarkEffectoptional— WeaponsSystem/Assets/Effects/HitMarksに保存されているPart/MeshPart/SpecialMeshヒットマーク効果の名前。デフォルトはBulletHole。
- AlignHitMarkToNormaloptional— ヒットマークが常に表面に対して平らに整列する場合はtrueに、弾道が来た方向から表面に突き刺さる場合はfalseに設定します(矢のように)。デフォルトはtrue。
上記のHitMarkEffectに示されているように、WeaponsSystem/Assets/Effects/HitMarks内に物理的な弾道として表示されるパート/メッシュを追加できます。たとえば、矢のMeshPartを含め、AlignHitMarkToNormalをfalseに設定すると、矢が撃った方向から表面に突き出るようになります。このPart/MeshPart/SpecialMeshには以下の子孫が含まれる場合があります:
- BulletHoleoptional— ヒット表面に完全に不透明に表示され、4秒後に1秒かけて透明になります。
- Impactoptional— ImpactBillboardの直接の子として、完全に不透明から始まり、ImpactBillboardの全サイズに0.1秒で成長し、その後半分のサイズに縮小し、0.1秒で完全に透明になります。
爆発する弾道
弾道には、衝突点の周囲のプレイヤーキャラクターにダメージを与えるExplosionオブジェクトを含めることができます。武器の設定フォルダーの子孫には以下が含まれます:
- ExplodeOnImpactoptional— 武器の弾丸/弾が衝突時に爆発する場合はtrueに、そうでない場合はfalseに設定します。デフォルトはfalse。
- BlastDamageoptional— 爆発の中心にいるものに与えられるダメージ。爆発の中心から遠くなるほど、当たった物体のダメージは減少します。デフォルトは100。
充電武器
レールガンのような充電武器は、再発射する前に充電する必要があります。
武器の武器モデルの子孫:
- ChargeCompleteParticlesoptional— 武器が充電を完了したときに放出されるParticleEmitter。このエミッターは、任意のモデルのBasePartの子またはBasePart内のAttachmentの子として含めることができます。
- DischargeCompleteParticlesoptional— 武器が完全に放電されたときに放出されるParticleEmitter。このエミッターは、任意のモデルのBasePartの子またはBasePart内のAttachmentの子として含めることができます。
- ChargingParticlesoptional— 武器が充電中に放出されるParticleEmitter。この名前のエミッターを複数含めることができ、各エミッターは充電中に放出されます。このエミッターは、任意のモデルのBasePartの子またはBasePart内のAttachmentの子として含めることができます。
武器の設定フォルダーの子孫:
- ChargeRate — 武器が充電する速度。この値は、武器が充電を使用することを示すために指定する必要があります。
- DischargeRateoptional— 武器が放電する速度。デフォルトは0で、武器は全く放電しません。
- ChargePassivelyoptional— 武器がパッシブに充電され、クリックするとすぐに発射されるようにしたい場合はtrueに、充電するためにクリック/タッチし、完全に充電されるまで発射しない場合はfalseに設定します。デフォルトはfalse。
- ChargingParticlesRatePerChargeoptional— 武器の現在の充電に掛けられたすべてのChargingParticlesエミッターから放出される粒子の数。デフォルトは20で、武器の充電が10%の場合、各ChargingParticlesエミッターは2粒子を放出します(20*0.1)、武器の充電が90%の場合、各エミッターは18粒子を放出します(20*0.9)。
- FireDischargeoptional— 完全に充電されたショットを発射した後に武器が失う充電の量。デフォルトは1。
- NumChargeCompleteParticlesoptional— 武器が完全に充電されたときにChargeCompleteParticlesエミッターが放出する粒子の数。デフォルトは25。
- NumDischargeCompleteParticlesoptional— 武器が完全に放電されたときにDischargeCompleteParticlesエミッターが放出する粒子の数。デフォルトは25。
弓武器
クロスボウのような弓武器は、リアルな弦とアームの構造、さらに弦にノックされた視覚的な矢を含めることができます。
モデルの子孫を追加することに加えて、以下を適用する必要があります:
- 武器を充電武器にします。たとえば、弦が引かれる速度を指定するChargeRateを武器のConfiguration内に追加します。さらに、弦/アームが引かれる音のためのChargingサウンドなど、武器のModelにオプションの子孫を追加することを検討してください。
武器の武器モデルの子孫には以下が含まれます:
- Arrowoptional— 弓が完全に引かれたときに表示される矢のためのBasePart。これは弓の視覚的な外観のためだけです(実際に発射される矢は、弾道/ヒット効果とサウンドで概説されているShotEffectになります)。
- String1 — 弦の中心点のためのAttachment。
- StringLoose — 弓が静止しているときのString1の位置。
- StringTight — 弓が完全に引かれたときのString1の位置。
- Armsoptional— 弓のアームがアニメーション化されることを示す内部インジケーターとして機能するPart。以下の直接の子を含む場合があります:
- LeftString0 — 弦の左側が弓に取り付けられる位置のためのAttachment。
- RightString0 — 弦の右側が弓に取り付けられる位置のためのAttachment。
- Mesh — 弓が引かれたときに実際に曲がるSpecialMeshの部分。これをアニメーション化するために、以下の4つのVector3Valueオブジェクトを指定する必要があります。
- LooseOffset — 弓が静止しているときのSpecialMeshのオフセット。
- TightOffset — 弓が完全に引かれたときのSpecialMeshのオフセット。
- LooseScale — 弓が静止しているときのSpecialMeshのスケール。
- TightScale — 弓が完全に引かれたときのSpecialMeshのスケール。
武器GUI
コア武器システムは、このシステムとインターフェースを持ち、銃の散布、ヒットしたときや他のプレイヤーをヒットしたときのインジケーターなどに基づいてGUIを更新します。
WeaponsSystemGuiは、ゲームが開始されるとPlayerGuiに親子関係を持つScreenGuiオブジェクトです。WeaponSystemGuiには以下の4つの子孫があります:
LargeTouchscreenは、大型タッチスクリーンに表示されるAimButtonとFireButtonボタンを含むFrameです。
SmallTouchscreenは、小型タッチスクリーンに表示されるAimButtonとFireButtonボタンを含むFrameです。
方向インジケーター
方向インジケーターは、プレイヤーのクロスヘアの周りの何かの方向を示すために使用されます。たとえば、誰かがあなたを撃った場合、赤い半円があなたのクロスヘアの周りに表示され、ショットが来た方向を示します。他の例には、足音の方向、間接的な銃火、またはチェストなどの環境オブジェクトの方向を示すインジケーターが含まれます。
新しいインジケーターを作成するには、WeaponsSystemGui/ScalingElements/DirectionalIndicatorsに新しいFrameを追加し、以下の構造を持たせます:
- インジケーター(Frame)
- 方向インジケーターのためのImageLabel。スタジオで画像の回転を調整する必要があるかもしれませんが、画像を下向きにアップロードし、周囲に空白がほとんどないか全くないようにする必要があります。この画像ラベルには、自身のUIAspectRatioConstraintも含める必要があります。
- 調整するオプションのプロパティを含むConfiguration:
- DistanceLevelFromCenteroptional— 画面の中心からの距離レベルの数(各距離レベルは約0.03画面スケールです)。デフォルトは6。
- FadeTimeoptional— アクティブ化後とTimeBeforeFade時間に続くインジケーターのフェード時間。デフォルトは1。
- TimeBeforeFadeoptional— インジケーターがフェードする前に表示される秒数。デフォルトは1。
- TransparencyBeforeFadeoptional— フェードを開始する前のインジケーターの透明度。デフォルトは0。
- WidthLeveloptional— 中心からの幅レベルの数(各幅レベルは約0.03画面スケールです)。デフォルトはDistanceLevelFromCenterの値です。
作成後、以下のコマンドを使用してWeaponsSystem/Libraries/WeaponsGui内でインジケーターをアクティブ化できます。ここで、indicatorNameはアクティブ化するインジケーターの文字列名、worldPosは方向インジケーターが指すべきワールド位置です:
self.DirectionalIndicatorGuiManager:ActivateDirectionalIndicator(indicatorName, worldPos)ダメージビルボード
ダメージビルボードは、キャラクターがダメージを受けたときにその頭上に数字を表示するために使用されます。これらは、他のプレイヤーのキャラクターにダメージを与えたプレイヤーにのみ表示され、観戦しているプレイヤーには表示されません。
ダメージビルボードはWeaponsSystem/Libraries/DamageBillboardHandlerで処理され、以下のように任意のクライアント側のコードからアクティブ化できます。ここで、damageは与えられたダメージの量、adornmentPartはビルボードを装飾する部分(たとえば、被害者の頭)です:
DamageBillboardHandler:ShowDamageBillboard(damage, adornmentPart)肩越しカメラ
肩越しカメラは、プレイヤーキャラクターの右肩越しに見る三人称カメラです。肩越しカメラをカスタマイズするには、WeaponsSystem/Libraries/ShoulderCameraのShoulderCamera.new()関数内の-- Configuration parameters (constants)コメントの下の変数を変更します。視野、キャラクターからのオフセット、スプリントまたはズーム中の歩行速度などを変更できます。
スプリントとズーム
デフォルトでは、武器システムは「スプリント」機能を追加し、プレイヤーはShiftキーを押し続けるか、ダイナミックサムスティック(モバイル)を完全に上に押すか、左ジョイスティック(ゲームパッド)を完全に上に押すことでスプリントできます。スプリントを無効にしたい場合は、WeaponsSystem/Configuration内のSprintEnabledの値をfalseに設定します。
システムはまた、プレイヤーがエイミング/ズーム中に速度を減少させますが、この動作を無効にするには、WeaponsSystem/Configuration内のSlowZoomWalkEnabledの値をfalseに設定します。








