武器套件

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

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

要在您的遊戲中使用預製武器:

  1. 從下方選擇一個武器,導航到資產庫鏈接。

    手槍

    散彈槍

    自動步槍

    衝鋒槍

    狙擊步槍

    十字弓

    榴彈發射器

    火箭發射器

    電磁炮

  2. 在武器的物品頁面上,點擊 獲取模型 按鈕並確認交易。

  3. 在 Studio 中,打開 工具箱 並選擇您的 庫存 部分。

  4. 找到武器並點擊它以將其添加到場景中。當提示是否將工具放入起始包時,如果您希望玩家在背包中開始時就擁有該武器,請點擊 ,或者點擊 以將武器簡單地放置在 3D 世界中作為拾取物。

  5. 如果這是 第一次 引入預製武器,請將其 WeaponsSystem 文件夾移入 ServerScriptService,以作為遊戲中所有預製武器的統一 系統文件夾

系統文件夾結構

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

WeaponsSystem 文件夾中,不同的方面由以下 ModuleScripts 控制:

方面主要處理於...
武器功能
  • WeaponsSystem
  • Libraries/BaseWeapon
  • WeaponTypes/BulletWeapon
  • WeaponTypes/BowWeapon
肩膀攝像頭
  • Libraries/ShoulderCamera
武器 GUI
  • Libraries/WeaponsGui
  • Libraries/DirectionalIndicatorGuiManager
  • Libraries/DamageBillboardHandler

武器結構

預製武器是 工具,並以它們在玩家背包中顯示的名稱命名。每個武器的結構具有相似的層次。

武器類型

WeaponType StringValue 對應於 WeaponsSystem/WeaponTypes 文件夾中武器的 ModuleScript。兩個基本值是 BulletWeaponBowWeapon

武器模型

每個武器包含一個由一個或多個 BaseParts 組成的 Model,以形成物理武器。其中一個應設置為模型的 PrimaryPart

該模型還包括以下重要的子項,這些子項可以附加到模型的 BaseParts 之一:

  • TipAttachmentAttachment,其在父 BasePart 上的位置決定了子彈/投射物的發射位置。
  • HandleAttachmentAttachment,其在父 BasePart 上的位置決定了工具的 手柄 鍍接位置。
  • Fired
    optional
    Sound,在武器開火時播放。
  • Reload
    optional
    Sound,在武器重新裝填時播放。
  • 任何 專用選項 的附加子項。

配置

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 中指定的瞄準鏡,請設置為 truefalse
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點擊之間的最小等待時間。對於 FireModeAutomatic 的武器,這也是在按住開火按鈕或點擊時的射擊間隔。0.1
StartupTime裝備武器後,玩家可以開火之前的時間長度。這防止玩家在短時間內從多個不同的武器中開火。0.2
TotalRecoilMax總最大累積後座力。武器的當前後座力永遠不會超過此值。2
ZeroDamageDistance在此距離或更遠的任何命中將不會受到傷害。10000

專用選項

您可以為任何武器添加/修改以下選項。這些自定義需要修改武器的 Model、武器的 Configuration 或兩者。一些配置依賴於其他配置,例如 槍口粒子,這需要必要的子項來實現 投射物/命中效果和聲音

鎖定動畫和聲音

武器的 鎖定 是每次開火時來回移動的部分。

  • 武器的 武器模型 的子項:

    • BoltBasePart,在武器開火時移動。
    • BoltMotorMotor6D 用於動畫鎖定。確保將馬達的 Part0 設置為武器模型的 PrimaryPart,並將 Part1 設置為 Bolt 部件。
    • BoltMotorStartAttachment,其在父 BasePart 上的位置決定了鎖定靜止時的位置。
    • BoltMotorTargetAttachment,其在父 BasePart 上的位置決定了鎖定在開火時的動畫位置。
    • BoltOpenSound
      optional
      Sound,在鎖定打開時播放。
    • BoltCloseSound
      optional
      Sound,在鎖定關閉時播放。
  • 武器的 配置 文件夾的子項:

    • ActionOpenTime
      optional
      — 鎖定動畫到開放位置所需的時間。默認為 0.025
    • ActionCloseTime
      optional
      — 鎖定動畫到關閉位置所需的時間。默認為 0.075

拋出的子彈殼

武器可以包括在開火時拋出的實體子彈殼,並掉落到地面上。

  • 武器的 武器模型 的子項:

    • CasingEjectPointAttachment,其在父 BasePart 上的位置決定了您希望子彈殼彈出的地方。請注意,其方向決定了殼彈出的方向。
  • 武器的 配置 文件夾的子項:

    • CasingEffect — 在 系統文件夾Assets/Effects/Casings 中的殼彈 BasePart 的名稱。
    • CasingEjectSpeedMin
      optional
      — 殼彈的最小彈出速度。默認為 15
    • CasingEjectSpeedMax
      optional
      — 殼彈的最大彈出速度。默認為 18
  • 系統文件夾Assets/Effects/Casings 中的殼彈 BasePart 的子項:

    • CasingHitSound
      optional
      Sound,在殼彈擊中地面時播放。

投射物/命中效果和聲音

您可以為任何武器配置實體投射物,以及 SoundsBeamsParticleEmitters 用於命中效果和其他特殊效果。

  • 武器的 配置 文件夾的子項:

    • ShotEffect — 存儲在 系統文件夾Assets/Effects/Shots 中的射擊效果名稱。
    • ShouldMovePart
      optional
      — 如果武器的 ShotEffect 應隨投射物移動,則設置為 true,否則設置為 false。只有在每次射擊時有可見物體隨之移動時,例如箭或火箭,才應將其設置為 true。默認為 false
    • BeamFadeTime
      optional
      Beam0Beam1(見下文)在子彈/投射物擊中某物後消失所需的時間。默認情況下,代碼不會應用手動淡出。默認為 0
    • BeamWidth0
      optional
      — 在 Attachment0(見下文)處的 Beam0Beam1 的厚度。默認為 1.5
    • BeamWidth1
      optional
      — 在 Attachment1(見下文)處的 Beam0Beam1 的厚度。默認為 1.8
    • NumHitParticles
      optional
      HitParticles(見下文)發射器將發射的粒子數量。默認為 3
    • HitParticlesUsePartColor
      optional
      — 如果您希望命中粒子為命中表面的顏色,則設置為 true;如果您希望命中粒子不改變顏色,則設置為 false。默認為 true
  • 上述指定的 ShotEffect 的子項:

    • Flying
      optional
      Sound,在子彈/投射物移動時播放。
    • Beam0
      optional
      — 用於子彈/投射物後方的第一個 Beam 的插槽。不要忘記設置 Attachment0Attachment1
    • Beam1
      optional
      — 用於子彈/投射物後方的第二個 Beam 的插槽。不要忘記設置 Attachment0Attachment1
    • Attachment0
      optional
      Attachment,其在父 BasePart 上的位置決定了拖尾光束的後部;確保在 Beam0Beam1 上將 Beam.Attachment0 設置為此。
    • Attachment1
      optional
      Attachment,其在父 BasePart 上的位置決定了拖尾光束的前部;確保在 Beam0Beam1 上將 Beam.Attachment1 設置為此。
    • TrailParticles
      optional
      ParticleEmitter,作為 Attachment0 的直接子項;在子彈/投射物移動時發射。
    • LeadingParticles
      optional
      ParticleEmitter,作為 Attachment1 的直接子項;在子彈/投射物移動時發射。
    • HitEffect
      optional
      Attachment,當子彈/投射物擊中時,其位置將設置為 Beam0Beam.Attachment1。您必須指定 Beam0 及其附件,以使其正常工作。
    • HitSound
      optional
      Sound,作為 HitEffect 的直接子項;在子彈/投射物擊中時播放。
    • HitParticles
      optional
      Sound,作為 HitEffect 的直接子項;在子彈/投射物擊中時發射。
    • Mesh
      optional
      — 您希望顯示為實體投射物的 SpecialMesh。如果您在這裡有可見物體,請確保在武器的配置中將 ShouldMovePart 設置為 true

槍口粒子

此選項在武器的 TipAttachment Attachment 開火時從指定的 ParticleEmitter 發射粒子。武器的 配置 文件夾的子項包括:

  • ShotEffect — 存儲在 WeaponsSystem/Assets/Effects/Shots 中的射擊效果名稱。作為此射擊效果的子項,包含名為 MuzzleParticlesParticleEmitter 資產。
  • NumMuzzleParticles
    optional
    — 將發射的槍口粒子數量。默認為 50

槍口閃光

此選項在武器開火時創建 Beam 閃光效果。

  • 武器的 武器模型 的子項:

    • MuzzleFlash0Attachment,用於指定槍口閃光的一側。位置無關緊要。
    • MuzzleFlash1Attachment,用於指定槍口閃光的對側。位置無關緊要。
    • MuzzleFlashBeam,用於槍口閃光效果。確保將光束的 Attachment0 設置為 MuzzleFlash0,並將 Attachment1 設置為 MuzzleFlash1
  • 武器的 配置 文件夾的子項:

    • MuzzleFlashTime
      optional
      — 槍口閃光顯示的時間長度。默認為 0.03
    • MuzzleFlashRotation0
      optional
      — 槍口閃光的最小旋轉。默認為 -math.pi
    • MuzzleFlashRotation1
      optional
      — 槍口閃光的最大旋轉。默認為 math.pi
    • MuzzleFlashSize0
      optional
      — 槍口閃光的最小大小。默認為 1
    • MuzzleFlashSize1
      optional
      — 槍口閃光的最大大小。默認為 1

粒子拖尾

此選項從武器到投射物撞擊點創建一條長度不一的拖尾。武器的 配置 文件夾的子項包括:

  • TrailLength
    optional
    — 子彈/投射物後面的拖尾長度;默認為 nil,這意味著拖尾長度將根據 TrailLengthFactor 計算。
  • TrailLengthFactor
    optional
    — 如果指定,拖尾長度將設置為此值乘以子彈/投射物在上一幀中移動的距離;默認為 1。請注意,如果您包含 TrailLength,這將被覆蓋。
  • ShowEntireTrailUntilHit
    optional
    — 設置為 true 以從武器尖端渲染拖尾,直到投射物擊中某物;這將覆蓋 TrailLengthTrailLengthFactor,拖尾將僅在投射物擊中某物後消失。設置為 false 以使用上述兩個選項之一來計算拖尾長度。默認為 false

命中標記

此視覺附加物出現在投射物命中的表面上,對於箭、子彈孔、燒焦痕跡等非常有用。武器的 配置 文件夾的子項包括:

  • HitMarkEffect
    optional
    — 存儲在 WeaponsSystem/Assets/Effects/HitMarks 中的 Part/MeshPart/SpecialMesh 命中標記效果的名稱。默認為 BulletHole
  • AlignHitMarkToNormal
    optional
    — 如果命中標記應始終平坦對齊於表面(如子彈孔),則設置為 true;如果命中標記應顯示為從投射物來的方向卡在表面上(如箭),則設置為 false。默認為 true

如上所述的 HitMarkEffect,您可以在 WeaponsSystem/Assets/Effects/HitMarks 中添加一個部件/網格以顯示為實體投射物。例如,包含一個箭的 MeshPart 並將 AlignHitMarkToNormal 設置為 false 將使箭從您射擊的方向突出於表面。此 Part/MeshPart/SpecialMesh 可能包含以下子項:

  • Glow
    optional
    Decal,在命中表面上完全不透明,然後迅速變得更透明,就像在表面上快速消失的發光效果。對於顯示爆炸物命中後的發光紅色標記等非常有用。
  • BulletHole
    optional
    Decal,在命中表面上完全不透明,並在 4 秒後在 1 秒內淡出為透明。
  • ImpactBillboard
    optional
    BillboardGui,顯示在命中表面上,始終面向攝像頭。
  • Impact
    optional
    ImageLabel,作為 ImpactBillboard 的直接子項;這開始時完全不透明,然後在 0.1 秒內增長到 ImpactBillboard 的全尺寸,然後縮小到一半大小並在 0.1 秒內淡出為完全透明。

爆炸投射物

投射物可以包括一個 Explosion 對象,以在撞擊點周圍的區域對玩家角色造成傷害。武器的 配置 文件夾的子項包括:

  • ExplodeOnImpact
    optional
    — 如果您希望武器的子彈/投射物在撞擊時爆炸,則設置為 true,否則設置為 false。默認為 false
  • BlastRadius
    optional
    — 爆炸的 BlastRadius;默認為 8
  • BlastPressure
    optional
    — 爆炸的 BlastPressure;默認為 10000
  • BlastDamage
    optional
    — 對爆炸中心的物體造成的傷害。請注意,爆炸對於距離爆炸中心越遠的命中物體造成的傷害越少。默認為 100

充能武器

電磁炮 這樣的充能武器必須在射擊之間充能,才能再次開火。

  • 武器的 武器模型 的子項:

    • Charging
      optional
      Sound,在武器充能時播放。
    • Discharging
      optional
      Sound,在武器放電時播放,例如如果您僅部分充能武器並釋放開火按鈕。
    • ChargeComplete
      optional
      Sound,在武器達到滿充電時播放。
    • DischargeComplete
      optional
      Sound,在武器完全放電時播放。
    • ChargeGlow
      optional
      BasePart,在武器充能時會變得不那麼透明,當充能達到 100% 時將完全不透明。
    • ChargeCompleteParticles
      optional
      ParticleEmitter,在武器充能完成時發射。此發射器可以是任何模型 BasePart 的子項或 BasePart 中的 Attachment 的子項。
    • DischargeCompleteParticles
      optional
      ParticleEmitter,在武器完全放電時發射。此發射器可以是任何模型 BasePart 的子項或 BasePart 中的 Attachment 的子項。
    • ChargingParticles
      optional
      ParticleEmitter,在武器充能時發射。您可以包含多個此名稱的發射器,並且每個發射器在充能時都會發射。此發射器可以是任何模型 BasePart 的子項或 BasePart 中的 Attachment 的子項。
  • 武器的 配置 文件夾的子項:

    • ChargeRate — 武器充能的速度。必須指定此值以表明武器使用充能。
    • DischargeRate
      optional
      — 武器放電的速度。默認為 0,這意味著武器根本不會放電。
    • ChargePassively
      optional
      — 如果您希望武器被動充能,以便在點擊時立即開火,則設置為 true;如果您希望點擊/觸摸以充能武器並在充能完成後開火,則設置為 false。默認為 false
    • ChargingParticlesRatePerCharge
      optional
      — 將從所有 ChargingParticles 發射器中發射的粒子數量乘以武器的當前充能。默認為 20,這意味著如果武器充能為 10%,每個 ChargingParticles 發射器將發射 2 個粒子(20*0.1),如果武器充能為 90%,每個發射器將發射 18 個粒子(20*0.9)。
    • FireDischarge
      optional
      — 武器在開火完全充能的射擊後將失去的充能量。默認為 1
    • NumChargeCompleteParticles
      optional
      — 武器完全充能後,ChargeCompleteParticles 發射器將發射的粒子數量。默認為 25
    • NumDischargeCompleteParticles
      optional
      — 武器完全放電時,DischargeCompleteParticles 發射器將發射的粒子數量。默認為 25

弓武器

十字弓 這樣的弓武器可以包括真實的弦和臂的結構,以及一個可視的箭矢搭在弦上。

除了添加模型子項外,您還需要應用以下內容:

  • 將武器設置為 充能武器。例如,在武器的 Configuration 中添加所需的 ChargeRate,以指定弦被拉緊的速度。此外,考慮在武器的 Model 中添加可選的子項,例如拉緊弦/臂的 Charging 音效。
  • WeaponType 設置為 BowWeapon,如 武器結構 中所示。

武器的 武器模型 的子項包括:

  • LeftString
    optional
    Beam,用於可視的弦的左半部分。
  • RightString
    optional
    Beam,用於可視的弦的右半部分。
  • Arrow
    optional
    BasePart,在弓完全拉緊時出現的箭。請注意,這僅用於弓的可視外觀(實際發射的箭將是 投射物/命中效果和聲音 中概述的 ShotEffect)。
  • String1Attachment,用於弦的中心點。
  • StringLooseAttachment,當弓靜止時 String1 應在的位置。
  • StringTightAttachment,當弓完全拉緊時 String1 應在的位置。
  • Arms
    optional
    Part,僅作為內部指示器,表明弓臂將被動畫化。這可能包含以下直接子項:
    • LeftString0Attachment,左側弦連接到弓的點。
    • RightString0Attachment,右側弦連接到弓的點。
    • LeftLooseAttachment,當弓靜止時 LeftString0 應在的位置。
    • RightLooseAttachment,當弓靜止時 RightString0 應在的位置。
    • LeftTightAttachment,當弓完全拉緊時 LeftString0 應在的位置。
    • RightTightAttachment,當弓完全拉緊時 RightString0 應在的位置。
    • MeshSpecialMesh,弓的部分,當弓被拉緊時會彎曲。請注意,您必須指定以下四個 Vector3Value 對象以使其動畫化。
      • LooseOffset — 當弓靜止時 SpecialMesh 的偏移量。
      • TightOffset — 當弓完全拉緊時 SpecialMesh 的偏移量。
      • LooseScale — 當弓靜止時 SpecialMesh 的縮放。
      • TightScale — 當弓完全拉緊時 SpecialMesh 的縮放。

武器 GUI

核心武器系統與此系統接口,以根據槍的擴散、當您受到傷害或擊中其他人時的指示器等更新 GUI。

WeaponsSystemGui 是一個 ScreenGui 對象,位於 WeaponsSystem/Assets 中,當遊戲開始時附加到 PlayerGuiWeaponSystemGui 有四個子項,如下所示:

  • ScalingElements 是一個 Folder,包含以下子項:

  • LargeTouchscreen 是一個 Frame,包含在大型觸摸屏上顯示的 AimButtonFireButton 按鈕。

  • Scope 是一個 Frame,包含 ScopeImage 圖像標籤,當在啟用 HasScope 的武器上進行縮放時顯示(見 武器結構)。

  • SmallTouchscreen 是一個 Frame,包含在小型觸摸屏上顯示的 AimButtonFireButton 按鈕。

方向指示器

方向指示器用於顯示玩家十字準星周圍某物的方向。例如,如果有人射擊您,則可以在您十字準星周圍顯示紅色半圓,指示射擊來自的方向。其他示例包括顯示腳步聲、間接槍火或環境物體(如箱子)的方向的指示器。

要創建新的指示器,請在 WeaponsSystemGui/ScalingElements/DirectionalIndicators 中添加一個新的 Frame,其結構如下:

  • 指示器 (Frame)
    • 用於方向指示器的 ImageLabel。可能需要在 Studio 中調整圖像的旋轉,除非您上傳的圖像面朝下,並且周圍幾乎沒有空白空間。此圖像標籤還必須包含自己的 UIAspectRatioConstraint
    • Configuration,包含可選屬性以進行調整:
      • DistanceLevelFromCenter
        optional
        — 從屏幕中心的距離級別數(每個距離級別約為 0.03 屏幕比例)。默認為 6
      • FadeTime
        optional
        — 指示器在激活後和 TimeBeforeFade 時間後的淡出時間。默認為 1
      • Name
        optional
        — 您希望在代碼中引用的方向指示器的名稱。默認為指示器的頂層 Frame 的名稱。
      • TimeBeforeFade
        optional
        — 指示器在淡出之前將顯示的秒數。默認為 1
      • TransparencyBeforeFade
        optional
        — 指示器在開始淡出之前的透明度。默認為 0
      • WidthLevel
        optional
        — 從中心的寬度級別數(每個寬度級別約為 0.03 屏幕比例)。默認為 DistanceLevelFromCenter 的值。

創建後,您可以通過以下命令在 WeaponsSystem/Libraries/WeaponsGui 中激活指示器,其中 indicatorName 是要激活的指示器的字符串名稱,worldPos 是方向指示器應指向的世界位置:

self.DirectionalIndicatorGuiManager:ActivateDirectionalIndicator(indicatorName, worldPos)

傷害廣告牌

傷害廣告牌用於在角色頭上顯示數字,當他們受到傷害時。這些僅會顯示給傷害了另一個玩家角色的玩家,而不會顯示給觀戰的玩家。

傷害廣告牌在 WeaponsSystem/Libraries/DamageBillboardHandler 中處理,可以從任何客戶端代碼激活,如下所示,其中 damage 是造成的傷害量,adornmentPart 是要裝飾廣告牌的部件,例如受害者的頭部:

DamageBillboardHandler:ShowDamageBillboard(damage, adornmentPart)

肩膀攝像頭

肩膀攝像頭是一個第三人稱攝像頭,從玩家角色的右肩上方觀察。要自定義肩膀攝像頭,請修改 WeaponsSystem/Libraries/ShoulderCameraShoulderCamera.new() 函數的 -- Configuration parameters (constants) 註釋下的變量。您可以修改視野、與角色的偏移、在 衝刺或縮放 時的行走速度等。

衝刺和縮放

默認情況下,武器系統添加了 "衝刺" 功能,以便玩家可以通過按住 Shift 鍵、在動態拇指搖桿上完全向上推(移動設備)或在左搖桿上完全向上推(遊戲手柄)來衝刺。如果您想禁用衝刺,請將 WeaponsSystem/Configuration 中的 SprintEnabled 值設置為 false

該系統還會在玩家瞄準/縮放時降低玩家速度,但您可以通過將 WeaponsSystem/Configuration 中的 SlowZoomWalkEnabled 值設置為 false 來禁用此行為。

©2026 Roblox Corporation、Roblox、Roblox 標誌及 Powering Imagination 是我們在美國及其他國家地區的部分註冊與未註冊商標。