Roblox 提供以下預製武器,以協助創建競爭性戰鬥遊戲。核心系統具有基於投射物的武器,並配有肩膀上方的攝像頭,將投射物速度設置得足夠高可以模擬射線武器,如激光槍。

要在您的遊戲中使用預製武器:
在武器的物品頁面上,點擊 獲取模型 按鈕並確認交易。
在 Studio 中,打開 工具箱 並選擇您的 庫存 部分。

找到武器並點擊它以將其添加到場景中。當提示是否將工具放入起始包時,如果您希望玩家在背包中開始時就擁有該武器,請點擊 是,或者點擊 否 以將武器簡單地放置在 3D 世界中作為拾取物。
如果這是 第一次 引入預製武器,請將其 WeaponsSystem 文件夾移入 ServerScriptService,以作為遊戲中所有預製武器的統一 系統文件夾。

系統文件夾結構
WeaponsSystem 文件夾是一個統一的文件夾,包含資產、配置和腳本,為遊戲中的所有預製武器提供支持。如果位於 ServerScriptService 中,它將覆蓋可能存在於單個武器中的任何等效 WeaponsSystem 文件夾。

在 WeaponsSystem 文件夾中,不同的方面由以下 ModuleScripts 控制:
| 方面 | 主要處理於... |
|---|---|
| 武器功能 |
|
| 肩膀攝像頭 |
|
| 武器 GUI |
|
武器結構
預製武器是 工具,並以它們在玩家背包中顯示的名稱命名。每個武器的結構具有相似的層次。
武器類型
WeaponType StringValue 對應於 WeaponsSystem/WeaponTypes 文件夾中武器的 ModuleScript。兩個基本值是 BulletWeapon 和 BowWeapon。
武器模型
每個武器包含一個由一個或多個 BaseParts 組成的 Model,以形成物理武器。其中一個應設置為模型的 PrimaryPart。

該模型還包括以下重要的子項,這些子項可以附加到模型的 BaseParts 之一:
- 任何 專用選項 的附加子項。
配置
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(每次點擊/觸摸一次射擊)、Automatic(持續射擊)或 Burst(每次點擊/觸摸射擊等於 NumBurstShots 的爆發)。 | Semiautomatic |
| FullDamageDistance | 射擊將造成全傷害的最大距離。超過此距離的任何命中將隨著距離接近 ZeroDamageDistance 而受到越來越少的傷害。 | 1000 |
| GravityFactor | 重力應影響每個子彈/投射物的程度。例如,這個值對於 十字弓 是 1,因為箭在飛行過程中會拋物線,但這個值對於 火箭發射器 是 0,因為推進的火箭是直線飛行的。 | 0 |
| HasScope | 如果您希望使用在 武器 GUI 中指定的瞄準鏡,請設置為 true。 | false |
| HitDamage | 每次直接命中的傷害量。 | 10 |
| MaxDistance | 子彈/投射物在消失之前的最大距離。 | 2000 |
| MaxSpread | 武器的最大擴散量。 | 值為 MinSpread |
| MinSpread | 武器的最小擴散量。 | 0 |
| NumBurstShots | 每次點擊/爆發的射擊次數;僅在您將 FireMode 設置為 Burst 時才重要。 | 3 |
| NumProjectiles | 當您點擊/觸摸一次時,同時發射的子彈/投射物數量。這對於像 散彈槍 這樣同時發射多顆子彈的武器非常有用。請注意,無論此值為何,一次射擊將始終使用恰好一發彈藥。 | 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— Attachment,其在父 BasePart 上的位置決定了拖尾光束的後部;確保在 Beam0 和 Beam1 上將 Beam.Attachment0 設置為此。
- Attachment1optional— Attachment,其在父 BasePart 上的位置決定了拖尾光束的前部;確保在 Beam0 和 Beam1 上將 Beam.Attachment1 設置為此。
- HitEffectoptional— Attachment,當子彈/投射物擊中時,其位置將設置為 Beam0 的 Beam.Attachment1。您必須指定 Beam0 及其附件,以使其正常工作。
槍口粒子
此選項在武器的 TipAttachment Attachment 開火時從指定的 ParticleEmitter 發射粒子。武器的 配置 文件夾的子項包括:
- ShotEffect — 存儲在 WeaponsSystem/Assets/Effects/Shots 中的射擊效果名稱。作為此射擊效果的子項,包含名為 MuzzleParticles 的 ParticleEmitter 資產。
- NumMuzzleParticlesoptional— 將發射的槍口粒子數量。默認為 50。
槍口閃光
此選項在武器開火時創建 Beam 閃光效果。
武器的 武器模型 的子項:
- MuzzleFlash0 — Attachment,用於指定槍口閃光的一側。位置無關緊要。
- MuzzleFlash1 — Attachment,用於指定槍口閃光的對側。位置無關緊要。
粒子拖尾
此選項從武器到投射物撞擊點創建一條長度不一的拖尾。武器的 配置 文件夾的子項包括:
- TrailLengthoptional— 子彈/投射物後面的拖尾長度;默認為 nil,這意味著拖尾長度將根據 TrailLengthFactor 計算。
- TrailLengthFactoroptional— 如果指定,拖尾長度將設置為此值乘以子彈/投射物在上一幀中移動的距離;默認為 1。請注意,如果您包含 TrailLength,這將被覆蓋。
- ShowEntireTrailUntilHitoptional— 設置為 true 以從武器尖端渲染拖尾,直到投射物擊中某物;這將覆蓋 TrailLength 和 TrailLengthFactor,拖尾將僅在投射物擊中某物後消失。設置為 false 以使用上述兩個選項之一來計算拖尾長度。默認為 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 可能包含以下子項:
- Impactoptional— ImageLabel,作為 ImpactBillboard 的直接子項;這開始時完全不透明,然後在 0.1 秒內增長到 ImpactBillboard 的全尺寸,然後縮小到一半大小並在 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。
弓武器
像 十字弓 這樣的弓武器可以包括真實的弦和臂的結構,以及一個可視的箭矢搭在弦上。
除了添加模型子項外,您還需要應用以下內容:
- 將武器設置為 充能武器。例如,在武器的 Configuration 中添加所需的 ChargeRate,以指定弦被拉緊的速度。此外,考慮在武器的 Model 中添加可選的子項,例如拉緊弦/臂的 Charging 音效。
武器的 武器模型 的子項包括:
- String1 — Attachment,用於弦的中心點。
- Armsoptional— Part,僅作為內部指示器,表明弓臂將被動畫化。這可能包含以下直接子項:
- LeftString0 — Attachment,左側弦連接到弓的點。
- RightString0 — Attachment,右側弦連接到弓的點。
- Mesh — SpecialMesh,弓的部分,當弓被拉緊時會彎曲。請注意,您必須指定以下四個 Vector3Value 對象以使其動畫化。
- LooseOffset — 當弓靜止時 SpecialMesh 的偏移量。
- TightOffset — 當弓完全拉緊時 SpecialMesh 的偏移量。
- LooseScale — 當弓靜止時 SpecialMesh 的縮放。
- TightScale — 當弓完全拉緊時 SpecialMesh 的縮放。
武器 GUI
核心武器系統與此系統接口,以根據槍的擴散、當您受到傷害或擊中其他人時的指示器等更新 GUI。
WeaponsSystemGui 是一個 ScreenGui 對象,位於 WeaponsSystem/Assets 中,當遊戲開始時附加到 PlayerGui。WeaponSystemGui 有四個子項,如下所示:
ScalingElements 是一個 Folder,包含以下子項:
LargeTouchscreen 是一個 Frame,包含在大型觸摸屏上顯示的 AimButton 和 FireButton 按鈕。
SmallTouchscreen 是一個 Frame,包含在小型觸摸屏上顯示的 AimButton 和 FireButton 按鈕。
方向指示器
方向指示器用於顯示玩家十字準星周圍某物的方向。例如,如果有人射擊您,則可以在您十字準星周圍顯示紅色半圓,指示射擊來自的方向。其他示例包括顯示腳步聲、間接槍火或環境物體(如箱子)的方向的指示器。
要創建新的指示器,請在 WeaponsSystemGui/ScalingElements/DirectionalIndicators 中添加一個新的 Frame,其結構如下:
- 指示器 (Frame)
- 用於方向指示器的 ImageLabel。可能需要在 Studio 中調整圖像的旋轉,除非您上傳的圖像面朝下,並且周圍幾乎沒有空白空間。此圖像標籤還必須包含自己的 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 來禁用此行為。








