武器包

*此内容使用人工智能(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 的直接子项;在子弹/投射物命中时发射。

枪口粒子

此选项在武器的 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 对象以使其动画化。

武器 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 是我们在美国及其他国家或地区的注册与未注册商标。