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 设置为此。
枪口粒子
此选项在武器的 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,右侧弦连接到弓的点。
武器 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 来禁用此行为。








