Weapons Kit

To assist in creating competitive combat-based experiences, several endorsed weapons are available for use in any experience. The core system features projectile-based weapons with an over-the-shoulder camera, and setting the projectile speed high enough can simulate raycasting weapons like laser guns.

To use an endorsed weapon in your experience:

  1. Select a weapon from below, navigating to the asset library link:

    Pistol

    Shotgun

    Auto Rifle

    Submachine Gun

    Sniper Rifle

    Crossbow

    Grenade Launcher

    Rocket Launcher

    Railgun

  2. On the weapon's item page, click the green Get button and confirm the transaction.

  3. In Roblox Studio, open the toolbox (View → Toolbox).

  4. Select your toolbox Inventory section.

  5. Locate the weapon and click it to add it into the place. When prompted whether to put the tool into the starter pack, click Yes if you want users to start the experience with the weapon or click No to simply place the weapon in the experience world as a pickup.

WeaponsSystem Folder Structure

The WeaponsSystem folder which controls all endorsed weapons contains the following objects:

Name Instance Type Description
Assets Folder
Assets → Animations Folder Storage for animations used in the weapons systems.
Assets → Effects Folder
Assets → Effects → Casings Folder Storage for all bullet casing assets.
Assets → Effects → HitMarks Folder Storage for all hit mark effects.
Assets → Effects → Shots Folder Storage for all shot effects.
Assets → WeaponsSystemGui ScreenGui Settings for the Weapons System GUI
Configuration Folder Configuration values for the weapons system.
Configuration → SlowZoomWalkEnabled BoolValue Setting for sprint control.
Configuration → SprintEnabled BoolValue Setting for sprint control.
Libraries Folder Stores all other ModuleScripts used in the weapons system.
WeaponTypes Folder Specifies all weapon types.
ServerWeaponsScript Script Ensures only one instance of the weapons system runs.
Version IntValue
ClientWeaponScript LocalScript Ensures only one instance of the weapons system runs.
NetworkingCallbacks ModuleScript
WeaponData RemoteEvent
WeaponsSystem ModuleScript

Within the WeaponsSystem folder, different aspects are controlled by the following ModuleScripts:

Aspect Handled Primarily Within...
Weapons Functionality WeaponsSystem
Libraries/BaseWeapon
WeaponTypes/BulletWeapon
WeaponTypes/BowWeapon
Shoulder Camera Libraries/ShoulderCamera
Weapons GUI Libraries/WeaponsGui
Libraries/DirectionalIndicatorGuiManager
Libraries/DamageBillboardHandler

Modifying a Weapon

Below are all the generic descendants needed to modify a weapon or create a new weapon, along with all optional descendants to override. More specialized options are specified in Weapon Options.

A weapon is a Tool and should be named as it appears in the user's backpack. A weapon object is made up of the following components:

  • WeaponType - A String that corresponds with the ModuleScript for the weapon in WeaponsSystem/WeaponTypes folder. By default, the two base options are BulletWeapon and BowWeapon.
  • [WeaponModel] - A Model made up of one or more BaseParts. These make up the physical weapon model and one should be set as the model's PrimaryPart. See WeaponModel for descendants.
  • Handle - A Part positioned where a user holds the weapon.
  • Configuration - A Configuration instance that holds custom property values for weapons. Each value has a default, so these are only optional if you intend on changing the defaults. See Configuration for configuration items.

WeaponModel

A WeaponModel is a Model descendent of a weapon made up of one or more BasePart objects. You can include additional modifications from Weapon Options as a descendent of WeaponModel.

A WeaponModel has the following descendants:

Name Instance Type Description
TipAttachment Attachment Position this attachment on a weapon model BasePart where you want bullets/projectiles to come out.
HandleAttachment Attachment Position this attachment on a weapon model BasePart where you want the handle to be welded to.
Fired Sound Plays when the weapon is fired. This is optional.
Reload Sound Plays when the weapon is reloaded. This is optional.

Configuration

The weapon configuration file is a Configuration descendent of a weapon defining specific attributes of weapon behavior. Configuration items all have default values and do not need to be set manually. You can add additional configuration items from Weapon Options when applicable.

The following are the available base configurations and their default values:

Name Instance Type Description
AmmoCapacity IntValue Number of shots in each "ammo clip" before user must reload; default is 30. Note that ammo is unlimited and this does not specify how much ammo a user is carrying.
FireMode StringValue Choose from either Semiautomatic (click once for each shot), Automatic (hold click to continuously fire), or Burst (click to shoot a burst of bullets depending on NumBurstShots). Default is Semiautomatic.
ShotCooldown NumberValue Minimum waiting time between clicks; default is 0.1. For Automatic weapons, this is also the time between shots while holding click.
BurstShotCooldown NumberValue Time between each shot in a burst; default is the value of ShotCooldown and this only matters if you specify FireMode to be Burst.
NumBurstShots IntValue Number of shots per click/burst; default is 3 and this only matters if you specify FireMode to be Burst.
HitDamage NumberValue Amount of damage each direct hit does; default is 10.
FullDamageDistance NumberValue Maximum distance that shots will do full damage. Default is 1000 and anything hit beyond this distance will receive less and less damage as the distance nears ZeroDamageDistance.
ZeroDamageDistance NumberValue Anything hit at or beyond this distance will receive no damage; default is 10000.
BulletSpeed NumberValue Speed that bullets/projectiles travel when shot; default is 1000. Setting this to something like 20000 can simulate raycasting weapons like laser guns.
MaxDistance NumberValue Maximum distance bullets/projectiles can travel before disappearing; default is 2000.
MinSpread NumberValue Minimum amount of spread for the weapon; default is 0.
MaxSpread NumberValue Maximum amount of spread for the weapon; default is value of MinSpread.
GravityFactor NumberValue Amount that gravity should influence each bullet/projectile; default is 0. For example, this value for the Crossbow is 1 because its arrows should arc, but this value for the Rocket Launcher is 0 because rockets should travel straight.
HasScope BoolValue Set to true if you want to use the scope that's specified in Weapons System GUI. Default is false.
ReloadAnimation StringValue Name of reload animation in WeaponsSystem/Assets/Animations; default is RifleReload.
AimTrack StringValue Name of aim animation track in WeaponsSystem/Assets/Animations; default is RifleAim.
AimZoomTrack StringValue Name of aim zooming animation track in WeaponsSystem/Assets/Animations; default is RifleAimDownSights.
RecoilMin NumberValue Minimum recoil added for each shot; default is 0.05.
RecoilMax NumberValue Maximum recoil added for each shot; default is 0.5.
TotalRecoilMax NumberValue Total maximum accumulated recoil (weapon's current recoil will never be higher than this value); default is 2.
RecoilDecay NumberValue Decay multiplier for recoil (essentially the rate at which recoil will go away after shooting); default is 0.825.
RecoilDelayTime NumberValue Waiting time after shooting/clicking before recoil is added to camera; default is 0.07.
StartupTime NumberValue Length of time after equipping this weapon before the user can shoot; default is 0.2. This prevents users from firing a single shot from a bunch of different weapons in quick succession.
FiredPlaybackSpeedRange NumberValue Amount that the pitch can vary for the Fired sound of this weapon. Set this to 0 if you want the sound to always play at the same pitch. Default is 0.1.
NumProjectiles NumberValue Number of bullets/projectiles that will fire at the same time when you click once; default is 1. This is useful for weapons like the Shotgun that fires multiple bullets at same time. Note that one shot will always use exactly one ammo regardless of this value.

Weapon Options

Any number of the following options can be added/modified for any weapon. Weapon option customizations require modifying the weapon's Model or the weapon's Configuration or both. Some configurations are dependent on others, such as Muzzle Particles which requires the necessary children for Projectile/Hit Effects and Sounds.

Bolt Animations and Sounds

An endorsed weapon's bolt is the part that moves back and forth each time you fire it.

Model descendants:

  • Bolt (BasePart) — The actual bolt that will move when it's animated.
  • BoltMotor (Motor6D) — Used to animate the bolt. Make sure to set Part0 to the weapon's PrimaryPart and Part1 to the Bolt.
  • BoltMotorStart (Attachment) — Point where the bolt is when it's at rest.
  • BoltMotorTarget (Attachment) — Point where the bolt animates to when shooting.
  • BoltOpenSound (Sound) (optional) — Plays when the bolt opens.
  • BoltCloseSound (Sound) (optional) — Plays when the bolt closes

Configuration descendants:

  • ActionOpenTime (NumberValue) (optional) — Time it takes for the bolt to animate to open position; default is 0.025.
  • ActionCloseTime (NumberValue) (optional) — Time it takes for the bolt to animate to closed position; default is 0.075.

Ejecting Bullet Casings

Weapons can include physical bullet casings that eject upon firing and fall to the ground.

Model descendants:

  • CasingEjectPoint (Attachment) — Position this attachment on a weapon model BasePart where you want bullet casings to pop out. Note that its orientation determines the direction the casings will pop out.

Configuration descendants:

  • CasingEffect (StringValue) — Name of casing BasePart in WeaponsSystem/Assets/Effects/Casings.
  • CasingEjectSpeedMin (NumberValue) (optional) — Minimum eject speed of casings; default is 15.
  • CasingEjectSpeedMax (NumberValue) (optional) — Maximum eject speed of casings; default is 18.

You can add the following optional asset within WeaponsSystem/Assets/Effects/Casings:

  • CasingHitSound (Sound) (optional) — Plays when casings hit the ground.

Projectile/Hit Effects and Sounds

Physical projectiles can be specified for any weapon, along with Sounds, Beams, and ParticleEmitters for hit effects and other special effects.

Configuration descendants:

  • ShotEffect (StringValue) — Name of a shot effect stored within WeaponsSystem/Assets/Effects/Shots.
  • ShouldMovePart (BoolValue) (optional) — Set to true if the weapon's ShotEffect should move with the projectile or false if not; default is false. You should only set this to true if there's a visible object that moves with each shot, such as an arrow or rocket.
  • BeamFadeTime (NumberValue) (optional) — Time it takes for Beam0 and Beam1 to fade after bullet/projectile hits something. Default is nil which means no manual fade will be applied by code.
  • BeamWidth0 (NumberValue) (optional) — Thickness of Beam0/Beam1 at Attachment0; default is 1.5.
  • BeamWidth1 (NumberValue) (optional) — Thickness of Beam0/Beam1 at Attachment1; default is 1.8.
  • NumHitParticles (IntValue) (optional) — Number of particles the HitParticles ParticleEmitter will emit. Default is 3.
  • HitParticlesUsePartColor (BoolValue) (optional) — Set to true if you want the hit particles to be the color of the hit surface, false if you want hit particles to not change color. Default is true.

You can add the following optional asset within WeaponsSystem/Assets/Effects/Shots:

  • Flying (Sound) (optional) — Plays while bullet/projectile is traveling.
  • Beam0 (Beam) (optional) — First slot for a trailing beam behind bullet/projectile. Don't forget to set attachments (see descendants which follow).
  • Beam1 (Beam) (optional) — Second slot for a trailing beam behind bullet/projectile. Don't forget to set attachments (see descendants which follow).
  • Attachment0 (Attachment) (optional) — Back of trailing beams; make sure to set Attachment0 on both Beam0 and Beam1 to this.
  • TrailParticles (ParticleEmitter) (optional) — Direct child of Attachment0; this will emit from Attachment0 while the bullet/projectile is traveling.
  • Attachment1 (Attachment) (optional) — Front of trailing beams; make sure to set Attachment1 on both Beam0 and Beam1 to this.
  • LeadingParticles (ParticleEmitter) (optional) — Direct child of Attachment1; this will emit from Attachment1 while the bullet/projectile is traveling.
  • HitEffect (Attachment) (optional) — Position doesn't matter; the position will be set to Beam0.Attachment1 when the bullet/projectile hits, so you must specify Beam0 and its attachments for this to work properly.
  • HitSound (Sound) (optional) — Direct child of HitEffect; plays when the bullet/projectile hits.
  • HitParticles (ParticleEmitter) (optional) — Direct child of HitEffect; emits when the bullet/projectile hits.
  • Any Part/MeshPart/SpecialMesh that you want to appear as a physical projectile (optional). Make sure you set ShouldMovePart noted in the previous section to true if you have a visible object here.

Muzzle Particles

This option emits particles from the specified ParticleEmitter at the weapon's TipAttachment Attachment when it's fired.

Configuration descendants:

  • ShotEffect (StringValue) — Name of a shot effect stored within WeaponsSystem/Assets/Effects/Shots.
  • NumMuzzleParticles (IntValue) (optional) — Number of muzzle particles that will be emitted; default is 50.

For the specified shot effect, add a ParticleEmitter asset within WeaponsSystem/Assets/Effects/Shots named MuzzleParticles.

Muzzle Flashes

This option creates a Beam flash effect when the weapon is fired.

Model descendants:

  • MuzzleFlash0 (Attachment) — Used to specify one side of muzzle flash. Position doesn't matter.
  • MuzzleFlash1 (Attachment) — Used to specify opposite side of muzzle flash. Position doesn't matter.
  • MuzzleFlash (Beam) — Make sure to set Attachment0 to MuzzleFlash0 and Attachment1 to MuzzleFlash1.

Configuration descendants:

  • MuzzleFlashTime (NumberValue) (optional) — Length of time muzzle flash will show for; default is 0.03.
  • MuzzleFlashRotation0 (NumberValue) (optional) — Minimum rotation of muzzle flash; default is -math.pi.
  • MuzzleFlashRotation1 (NumberValue) (optional) — Maximum rotation of muzzle flash; default is math.pi.
  • MuzzleFlashSize0 (NumberValue) (optional) — Minimum size of muzzle flash; default is 1.
  • MuzzleFlashSize1 (NumberValue) (optional) — Maximum size of muzzle flash; default is 1.

Particle Trails

This option creates a trail of varying length from the weapon to the projectile impact point.

Configuration descendants:

  • TrailLength (NumberValue) (optional) — Length of trail behind bullet/projectile; default is nil which means the trail length will instead be calculated using TrailLengthFactor.
  • TrailLengthFactor (NumberValue) (optional) — The trail length will be set to this value multiplied by the distance the bullet/projectile traveled in the last frame; default is 1. Note that this will be overridden if you include TrailLength.
  • ShowEntireTrailUntilHit (BoolValue) (optional) — Set to true to render the trail from the weapon tip all the way to wherever the projectile is; this will override both TrailLength and TrailLengthFactor and the trail will only disappear once the projectile hits something. Set to false to use one of the above two options to calculate trail length. Default is false.

Hit Marks

This visual addition appears on the surface where projectiles hit and is useful for arrows, bullet holes, scorch marks, etc.

Configuration descendants:

  • HitMarkEffect (StringValue) (optional) — Name of hit mark effect stored within WeaponsSystem/Assets/Effects/HitMarks; default is BulletHole.
  • AlignHitMarkToNormal (BoolValue) (optional) — Set to true if the hit mark should always align flat against the surface like a bullet hole, or false if the hit mark should appear stuck in the surface from the direction the projectile came from (like an arrow). Default is true.

You can add the following optional asset within WeaponsSystem/Assets/Effects/HitMarks:

  • Glow (Decal) (optional) — Appears on the hit surface fully opaque, then rapidly gets more transparent, like a glowing effect on the surface that fades quickly. Useful for things like showing a glowing red mark where explosives hit.
  • BulletHole (Decal) (optional) — Appears on the hit surface fully opaque and, after 4 seconds, fades to transparent over 1 second.
  • ImpactBillboard (BillboardGui) (optional) — Displays at the hit surface, always facing towards user.
    • Impact (ImageLabel) (optional) — Direct child of ImpactBillboard; this begins fully opaque, grows to the full size of the ImpactBillboard over 0.1 seconds, then shrinks to half its size and fades to full transparency over 0.1 seconds.
  • Any Part/MeshPart/SpecialMesh that you want to appear as a physical projectile (optional). For example, including an arrow MeshPart and setting AlignHitMarkToNormal noted above to false will make the arrow stick out of the surface from the direction you shot it.

Exploding Projectiles

Projectiles can include an Explosion object to damage users in an area around the impact point.

Configuration descendants:

  • ExplodeOnImpact (BoolValue) (optional) — Set to true if you want bullets/projectiles for the weapon to explode on impact, false otherwise. Default is false.
  • BlastRadius (NumberValue) (optional) — BlastRadius of explosion; default is 8.
  • BlastPressure (NumberValue) (optional) — BlastPressure of explosion; default is 10000.
  • BlastDamage (NumberValue) (optional) — Damage dealt to things in the center of the explosion. Note that the explosion does less damage the farther away hit objects are from the center of the explosion. Default is 100.

Charging Weapon

A charging weapon like the Railgun must be charged up between shots before it can fire again.

Model descendants:

  • Charging (Sound) (optional) — Plays while the weapon is charging.
  • Discharging (Sound) (optional) — Plays while the weapon is discharging, for example if you charge the weapon just partially and release the shoot button.
  • ChargeComplete (Sound) (optional) — Plays when the weapon has reached full charge.
  • DischargeComplete (Sound) (optional) — Plays when the weapon has completely discharged.
  • ChargeGlow (BasePart) (optional) — This object will get less transparent as the weapon charges up, such that it will be fully opaque at 100% charge.
  • ChargeCompleteParticles (ParticleEmitter) (optional) — Emits when the weapon has finished charging. This emitter can be a child of any model BasePart or a child of an Attachment within the BasePart.
  • DischargeCompleteParticles (ParticleEmitter) (optional) — Emits when the weapon has completely discharged. This emitter can be a child of any model BasePart or a child of an Attachment within the BasePart.
  • ChargingParticles (ParticleEmitter) (optional) — Emits while the weapon is charging. You can include multiple emitters of this name and each will emit while charging. This emitter can be a child of any model BasePart or a child of an Attachment within the BasePart.

Configuration descendants:

  • ChargeRate (NumberValue) (required) — Rate at which the weapon will charge. This value must be specified to indicate that the weapon uses charging.
  • DischargeRate (NumberValue) (optional) — Rate at which the weapon will discharge; default is 0 which means the weapon will not discharge at all.
  • ChargePassively (BoolValue) (optional) — Set to true if you want the weapon to passively charge so it will shoot instantly when you click, or false if you want to click/touch to charge the weapon and have it fire once full charge is reached. Default is false.
  • ChargingParticlesRatePerCharge (IntValue) (optional) — Number of particles that will emit out of all ChargingParticles emitters multiplied by the current charge of the weapon. Default is 20, meaning that if the weapon charge is at 10%, each ChargingParticles emitter will emit 2 particles (20×0.1), and if the weapon charge is at 90%, each emitter will emit 18 particles (20×0.9).
  • FireDischarge (NumberValue) (optional) — Amount of charge the weapon will lose after firing a fully charged shot; default is 1.
  • NumChargeCompleteParticles (IntValue) (optional) — Number of particles the - ChargeCompleteParticles emitter will emit once the weapon is fully charged. Default is 25.
  • NumDischargeCompleteParticles (IntValue) (optional) — Number of particles the - DischargeCompleteParticles emitter will emit when the weapon is completely discharged. Default is 25.

Bow Weapon

A bow weapon like the Crossbow can include a realistic string and arms construction, as well as a visual arrow nocked to the string.

In addition to adding model descendants, you need to apply the following:

  • Make the weapon into a charging weapon. For example, add the required ChargeRate within the weapon's Configuration that specifies how fast the string is drawn. Additionally, consider adding optional descendants to the weapon's Model such as a Charging sound for the string/arms being pulled back.
  • Set the WeaponType to BowWeapon as indicated in Modifying a Weapon.

Model descendants:

  • LeftString (Beam) (optional) — The visual left half of the string.
  • RightString (Beam) (optional) — The visual right half of the string.
  • Arrow (BasePart) (optional) — The arrow that appears when the bow is fully drawn. Note that this is only for visual appearance on the bow (the actual fired arrow will be a ShotEffect as outlined in Projectile/Hit Effects and Sounds).
  • String1 (Attachment) (optional) — The center point of the string.
  • StringLoose (Attachment) (optional) — Point where String1 should be when the bow is at rest.
  • StringTight (Attachment) (optional) — Point where String1 should be when the bow is fully drawn.
  • Arms (Part) (optional) — A part that just serves as an internal indicator that the bow arms will be animated. This may contain the following direct children:
  • LeftString0 (Attachment) (optional) — Point where the left side of the string is attached to the bow.
  • RightString0 (Attachment) (optional) — Point where the right side of the string is attached to the bow.
  • LeftLoose (Attachment) (optional) — Point where LeftString0 should be when the bow is at rest.
  • RightLoose (Attachment) (optional) — Point where RightString0 should be when the bow is at rest.
  • LeftTight (Attachment) (optional) — Point where LeftString0 should be when the bow is fully drawn.
  • RightTight (Attachment) (optional) — Point where RightString0 should be when the bow is fully drawn.
  • [SpecialMesh] (SpecialMesh) (optional) — The part of the bow that will actually bend when the bow is drawn. Note that you must specify the following four Vector3Value objects to make this animate.
  • LooseOffset (Vector3Value) (optional) — Offset of the SpecialMesh when the bow is at rest.
  • TightOffset (Vector3Value) (optional) — Offset of the SpecialMesh when the bow is fully drawn.
  • LooseScale (Vector3Value) (optional) — Scale of the SpecialMesh when the bow is at rest.
  • TightScale (Vector3Value) (optional) — Scale of the SpecialMesh when the bow is fully drawn.

Weapons System GUI

The core weapons system interfaces with this system to update the GUI based on things like spread of the gun, indicators for when you get hit or hit others, etc.

The WeaponsSystemGui is a ScreenGui object in WeaponsSystem/Assets that is parented to PlayerGui when the experience starts. WeaponSystemGui has 4 descendants:

Scaling Elements

ScalingElements is a Folder parented under WeaponsSystemGui with the following descendants:

Name Instance Type Description
DirectionalIndicators Folder A Folder where all directional indicators are stored.
Crosshair Frame A Frame containing the following objects:

[UIAspectRationConstraint] - UIAspectRatioConstraint
Bottom - ImageLabel
Left - ImageLabel
Right - ImageLabel
Top - ImageLabel
HitMarker Frame A Frame containing the following objects:

[UIAspectRatioConstraint] - UIAspectRatioConstraint
HitMarkerImage - ImageLabel that appears and fades when the user successfully hits anotheruser.

LargeTouchscreen

LargeTouchscreen is a Frame containing buttons that display on large touchscreens. LargeTouchscreen has the following descendants:

Scope

Scope is a Frame that contains ScopeImage (ImageLabel) which shows up when zooming on a weapon with HasScope enabled (see Modifying a Weapon).

Scope has the following descendants:

Name Instance Type Description
ScopeInstance Frame A Frame containing the following assets used when zooming on a weapon with HasScope enabled:

[UIAspectRationConstraint] - UIAspectRatioConstraint
BottomBlack - Frame
LeftBlack - Frame
RightBlack - Frame
TopBlack - Frame

SmallTouchscreen

SmallTouchScreen is a Frame containing buttons that display on small touchscreens. SmallTouchscreen has the following descendants:

Create a Directional Indicator

Directional indicators are used to show the direction of something around the user's crosshair. For example, if someone shoots you, a red semi-circle can show up around your crosshair in the direction the shot came from. Other examples include indicators to show the direction of footsteps, indirect gunfire, or even environmental objects such as chests.

To create a new indicator, add a new Indicator Frame in WeaponsSystemGui/ScalingElements/DirectionalIndicators with the following structure:

Name Instance Type Description
[UIAspectRationConstraint] UIAspectRatioConstraint
[ImageLabel] ImageLabel Image of the directional indicator. Tweaking the rotation of the image in Studio may be required unless you upload the image so that it's facing down and there's little or no blank space around it.
This image label must also contain its own
UIAspectRatioConstraint.
[Configuration] Configuration Contains optional properties to adjust. See Indicator Configuration for more information.

Once created, you can activate an indicator via the following command inside WeaponsSystem/Libraries/WeaponsGui where indicatorName is the string name of the indicator to activate and worldPos is the world position where the directional indicator should point:


1self.DirectionalIndicatorGuiManager:ActivateDirectionalIndicator(indicatorName, worldPos)
2

Indicator Configuration

The DirectionalIndicators can be further modified by adjusting the Configuration object parented under the [Indicator]. All of these settings have a default value, so there is no need to set configurations when not modifying a setting.

The following configurations can be set:

Name Instance Type Description
DistanceLevelFromCenter NumberValue Number of distance levels from the center of the screen (each distance level is about 0.03 screen scale); default is 6.
FadeTime NumberValue Indicator fade time following its activation and the TimeBeforeFade time; default is 1.
Name StringValue Name of the directional indicator as you want to reference it in code; default is the name of the indicator's top level Frame.
TimeBeforeFade NumberValue Number of seconds that the indicator will appear for before fading; default is 1.
TransparencyBeforeFade NumberValue Transparency of the indicator before it starts to fade; default is 0.
WidthLevel NumberValue Number of width levels from center (each width level is about 0.03 screen scale); default is the value of DistanceLevelFromCenter.

Show Damage Billboard

The damage billboard is used to show little numbers above a user's head when they are damaged. These will only show up for the user that damaged anotheruser, not for spectatingusers.

Damage billboards are handled in WeaponsSystem/Libraries/DamageBillboardHandler and can be activated from any client-side code as follows, where damage is the amount of damage done and adornmentPart is the part on which to adorn the billboard, such as the victim's head:


1DamageBillboardHandler:ShowDamageBillboard(damage, adornmentPart)
2

Shoulder Camera

The shoulder camera is a third-person camera that looks over the user's right shoulder. To customize the shoulder camera, modify the variables under the -- Configuration parameters (constants) comment in the ShoulderCamera.new() function of WeaponsSystem/Libraries/ShoulderCamera. You can modify things such as field of view, offset from user, walk speed while sprinting or zooming, etc.

Sprint and Zoom Control

By default, the weapons system adds "sprint" capability to the game, so users can sprint by holding the Shift key, pushing fully up on the dynamic thumbstick (mobile), or pushing fully up on the left joystick (gamepad). If you want to disable sprinting, set SprintEnabled within WeaponsSystem/Configuration to false.

The system also reduces users' speed while they're aiming/zooming, although setting the SlowZoomWalkEnabled boolean to false disables this behavior.