Pour aider à créer des expériences de combat compétitives, plusieurs armes approuvées sont disponibles pour une utilisation dans n'importe quelle expérience. Le système principal propose des armes à projectiles avec une caméra au-dessus de l'épaule, et en réglant la vitesse du projectile suffisamment élevée, on peut simuler des armes à rayons comme des pistolets laser.

Pour utiliser une arme approuvée dans votre expérience :
- Sélectionnez une arme ci-dessous, en naviguant vers le lien de la bibliothèque d'actifs.
Sur la page de l'item de l'arme, cliquez sur le bouton vert Obtenir et confirmez la transaction.
Dans Studio, ouvrez la Boîte à outils.
Sélectionnez la section Inventaire de votre boîte à outils.
Localisez l'arme et cliquez dessus pour l'ajouter dans l'emplacement. Lorsqu'il vous est demandé si vous souhaitez mettre l'outil dans le pack de départ, cliquez sur Oui si vous voulez que les joueurs commencent avec l'arme dans leur sac à dos, ou cliquez sur Non pour simplement placer l'arme dans le monde 3D en tant que pickup.
Si c'est la première fois que vous intégrez une arme approuvée, déplacez son dossier WeaponsSystem dans ServerScriptService pour servir de dossier système unifié pour toutes les armes approuvées dans l'expérience.

Structure du dossier système
Le dossier WeaponsSystem est un dossier unifié qui contient des actifs, des configurations et des scripts qui alimentent toutes les armes approuvées dans l'expérience. S'il est situé dans ServerScriptService, il remplace tous les dossiers WeaponsSystem équivalents qui peuvent résider dans des armes individuelles.

Le dossier WeaponsSystem contient les instances suivantes :
- WeaponTypes (Folder) – Spécifie tous les types d'armes.
- ServerWeaponsScript (Script)
- Version (IntValue)
- ClientWeaponScript (LocalScript)
- NetworkingCallbacks (ModuleScript)
- WeaponData (RemoteEvent)
- WeaponsSystem (ModuleScript)
Dans le dossier WeaponsSystem, différents aspects sont contrôlés par les ModuleScripts suivants :
| Aspect | Géré principalement dans... |
|---|---|
| Fonctionnalité des armes |
|
| Caméra à l'épaule |
|
| GUI des Armes |
|
Structure de l'arme
Les armes approuvées sont Tools et sont nommées comme elles apparaîtront dans le sac à dos du joueur. Chaque arme est structurée avec une hiérarchie similaire.
Type d'arme
Le WeaponType StringValue correspond au ModuleScript pour l'arme dans le dossier WeaponsSystem/WeaponTypes. Les deux valeurs de base sont BulletWeapon et BowWeapon.
Modèle d'arme
Chaque arme contient un Model constitué d'une ou plusieurs BaseParts pour former l'arme physique. Une de ces parties doit être définie comme la PrimaryPart du modèle.

Le modèle comprend également les descendants importants suivants qui peuvent être parentés à l'une des BaseParts du modèle :
- TipAttachment – Attachment dont la position sur le BasePart parent détermine d'où sortent les balles/projectiles.
- HandleAttachment – Attachment dont la position sur le BasePart parent détermine où la Handle est soudée.
- Descendants supplémentaires pour toute option spécialisée.
Poignée de l'arme
La partie Handle détermine où un personnage joueur tient l'arme. Cela doit être un Part, doit être nommé Handle, et doit être un enfant direct de l'arme (outil).
Dossier de configuration
Le dossier Configuration contient des types de "valeur" spécifiques pour le comportement de l'arme. Au-delà des valeurs par défaut, vous pouvez ajouter des éléments de configuration supplémentaires pour options spécialisées lorsque cela est applicable.
Voici les configurations de base et leurs valeurs par défaut :
| Article | Description | Par défaut |
|---|---|---|
| AmmoCapacity | Nombre de tirs dans chaque "chargeur" avant que le joueur doive recharger. Notez que les munitions sont illimitées et cela ne spécifie pas combien de munitions un joueur porte. | 30 |
| FireMode | Choisissez entre Semiautomatic (un tir par clic/touche), Automatic (tir continu), ou Burst (rafale de tirs égale à NumBurstShots à chaque clic/touche). | Semiautomatic |
| ShotCooldown | Temps d'attente minimum entre les clics. Pour les armes avec un FireMode de Automatic, c'est aussi le temps entre les tirs lors de l'appui sur le bouton de tir ou du maintien du clic. | 0.1 |
| BurstShotCooldown | Temps entre chaque tir dans une rafale ; ne compte que si vous définissez FireMode à Burst. | Valeur de ShotCooldown |
| NumBurstShots | Nombre de tirs par clic/rafale ; ne compte que si vous définissez FireMode à Burst. | 3 |
| HitDamage | Quantité de dégâts infligés par chaque coup direct. | 10 |
| FullDamageDistance | Distance maximale à laquelle les tirs infligeront des dégâts complets. Tout ce qui est touché au-delà de cette distance subira de moins en moins de dégâts à mesure que la distance approche ZeroDamageDistance. | 1000 |
| ZeroDamageDistance | Tout ce qui est touché à ou au-delà de cette distance ne recevra aucun dégât. | 10000 |
| BulletSpeed | Vitesse à laquelle les balles/projectiles voyagent lorsqu'ils sont tirés. Réglez ceci sur une valeur très élevée comme 20000 pour simuler des armes à rayons comme les pistolets laser. | 1000 |
| MaxDistance | Distance maximale que les balles/projectiles parcourent avant de disparaître. | 2000 |
| MinSpread | Quantité minimum d'écart pour l'arme. | 0 |
| MaxSpread | Quantité maximum d'écart pour l'arme. | Valeur de MinSpread |
| GravityFactor | Montant par lequel la gravité doit influencer chaque balle/projectile. Par exemple, cette valeur pour la Crossbow est 1 parce que les flèches arc lors de leur vol, mais cette valeur pour la Rocket Launcher est 0 car les roquettes propulsées voyagent en ligne droite. | 0 |
| HasScope | Définissez sur true si vous souhaitez utiliser la lunette spécifiée dans le GUI du Système d'Armes. | false |
| ReloadAnimation | Nom de la piste d'animation de rechargement dans Assets/Animations du dossier système. | RifleReload |
| AimTrack | Nom de la piste d'animation de visée dans Assets/Animations du dossier système. | RifleAim |
| AimZoomTrack | Nom de la piste d'animation de zoom dans Assets/Animations du dossier système. | RifleAimDownSights |
| RecoilMin | Recul minimum ajouté pour chaque tir. | 0.05 |
| RecoilMax | Recul maximum ajouté pour chaque tir. | 0.5 |
| TotalRecoilMax | Recul total maximum accumulé. Le recul actuel de l'arme ne dépassera jamais cette valeur. | 2 |
| RecoilDecay | Multiplicateur de décadence pour le recul ; essentiellement le taux auquel le recul diminue après un tir. | 0.825 |
| RecoilDelayTime | Temps d'attente après le tir/clic avant que le recul soit ajouté à la caméra. | 0.07 |
| StartupTime | Durée après l'équipement de l'arme avant que le joueur puisse tirer. Cela empêche les joueurs de tirer un seul coup de plusieurs armes différentes à la suite. | 0.2 |
| FiredPlaybackSpeedRange | Montant par lequel la hauteur peut varier pour le son Fired de l'arme. Réglez ceci sur 0 pour toujours le jouer à la même hauteur. | 0.1 |
| NumProjectiles | Nombre de balles/projectiles qui tireront en même temps lorsque vous cliquerez/toucherez une fois. Cela est utile pour des armes comme le Fusil à pompe qui tire plusieurs balles en même temps. Notez qu'un tir utilisera toujours exactement une munition, quelle que soit cette valeur. | 1 |
Options spécialisées
Vous pouvez ajouter/modifier les options suivantes pour n'importe quelle arme. Ces personnalisations nécessitent de modifier soit le Model de l'arme, soit le Configuration de l'arme, soit les deux. Certaines configurations dépendent des autres, telles que Muzzle Particles qui nécessitent les enfants nécessaires pour Projectile/Hits Effects and Sounds.
Animations et sons du boulon
Le boulon d'une arme est la partie qui bouge de va-et-vient chaque fois qu'elle est tirée.
- Descendants du modèle d'arme
| Boulon | BasePart qui bouge lorsque l'arme est tirée. | |
| BoulonMoteur | Motor6D utilisé pour animer le boulon. Assurez-vous de définir Part0 du moteur sur la PrimaryPart du modèle de l'arme et Part1 sur la partie Boulon. | |
| BoulonMoteurDébut | Attachment dont la position sur le BasePart parent détermine où se trouve le boulon lorsqu'il est au repos. | |
| BoulonMoteurCible | Attachment dont la position sur le BasePart parent détermine où le boulon s'anime lors du tir. | |
| BoulonOuvrirSon | Sound qui se joue lorsque le boulon s'ouvre. | optional |
| BoulonFermerSon | Sound qui se joue lorsque le boulon se ferme. | optional |
- Enfants du dossier de Configuration de l'arme
| Article | Description | Par défaut |
|---|---|---|
| ActionOuvrirTemps | Temps qu'il faut pour que le boulon s'anime à la position ouverte. | 0.025 |
| ActionFermerTemps | Temps qu'il faut pour que le boulon s'anime à la position fermée. | 0.075 |
Éjecter les douilles de balle
Les armes peuvent inclure des douilles de balle physiques qui s'éjectent lors du tir et tombent au sol.
- Descendants du modèle d'arme
| PointÉjectionDouille | Attachment dont la position sur le BasePart parent détermine où vous souhaitez que les douilles de balles popent. Notez que son orientation détermine la direction dans laquelle les douilles popent. |
- Enfants du dossier de Configuration de l'arme
| Article | Description | Par défaut |
|---|---|---|
| EffetDouille | Nom de la BasePart de douille dans Assets/Effects/Casings du dossier système. | |
| VitesseÉjectionDouilleMin | Vitesse d'éjection minimale des douilles | 15 |
| VitesseÉjectionDouilleMax | Vitesse d'éjection maximale des douilles | 18 |
| SonImpactDouille | Sound qui se joue lorsque les douilles touchent le sol. | optional |
Effets et sons de projectile/coup
Vous pouvez configurer des projectiles physiques pour n'importe quelle arme, ainsi que des Sons, Rayons et des ÉmetteursDeParticules pour les effets de coup et d'autres effets spéciaux.
- Enfants du dossier de Configuration de l'arme
| Article | Description | Par défaut |
|---|---|---|
| EffetTir | Nom d'un effet de tir stocké dans Assets/Effects/Shots du dossier système. | |
| ShouldMovePart | Définissez sur true si l'EffetTir de l'arme doit se déplacer avec le projectile ou false si ce n'est pas le cas. Vous ne devez le définir sur true que s'il y a un objet visible qui se déplace avec chaque tir, comme une flèche ou une roquette. | false |
| BeamFadeTime | Temps qu'il faut pour que Beam0 ou Beam1 (voir ci-dessous) se dégrade après que la balle/projectile touche quelque chose. Par défaut, aucun dégradé manuel ne sera appliqué par le code. | 0 |
| BeamWidth0 | Épaisseur de Beam0 ou Beam1 à Attachment0 (voir ci-dessous). | 1.5 |
| BeamWidth1 | Épaisseur de Beam0 ou Beam1 à Attachment1 (voir ci-dessous). | 1.8 |
| NumHitParticles | Nombre de particules que l'émetteur HitParticles (voir ci-dessous) émettra. | 3 |
| HitParticlesUsePartColor | Définissez sur true si vous voulez que les particules d'impact soient de la couleur de la surface touchée ; false si vous voulez que les particules d'impact ne changent pas de couleur. | true |
Descendants de ShotEffect
Descendants de l'EffetTir spécifié dans la section précédente
| Vol | Sound qui se joue pendant que la balle/projectile voyage. | optional |
| Beam0 | Premier emplacement pour un Beam traînant derrière la balle/projectile. N'oubliez pas de définir Attachment0 et Attachment1. | optional |
| Beam1 | Deuxième emplacement pour un Beam traînant derrière la balle/projectile. N'oubliez pas de définir Attachment0 et Attachment1. | optional |
| Attachment0 | Attachment dont la position sur le BasePart parent détermine l'arrière des faisceaux traînants ; assurez-vous de définir Beam.Attachment0 sur Beam0 et Beam1 à celui-ci. | optional |
| Attachment1 | Attachment dont la position sur le BasePart parent détermine l'avant des faisceaux traînants ; assurez-vous de définir Beam.Attachment1 sur Beam0 et Beam1 à celui-ci. | optional |
| TrailParticles | ParticleEmitter parenté comme enfant direct de Attachment0 ; il émettra pendant que la balle/projectile est en voyage. | optional |
| LeadingParticles | ParticleEmitter parenté comme enfant direct de Attachment1 ; il émettra pendant que la balle/projectile est en voyage. | optional |
| HitEffect | Attachment dont la position sera définie sur Beam.Attachment1 de Beam0 lorsque la balle/projectile touche quelque chose. Vous devez spécifier Beam0 et ses attachements pour que cela fonctionne correctement. | optional |
| HitSound | Sound parenté comme enfant direct de HitEffect ; se joue lorsque la balle/projectile touche. | optional |
| HitParticles | Sound parenté comme enfant direct de HitEffect ; émet lorsque la balle/projectile touche. | optional |
| [ProjectilePart] | N'importe quelle Part ou MeshPart que vous voulez faire apparaître comme un projectile physique. Assurez-vous de définir ShouldMovePart mentionné dans la section précédente sur true si vous avez un objet visible ici. | optional |
Particules de bouche
Cette option émet des particules depuis l'ParticleEmitter spécifié au niveau de la TipAttachment Attachment de l'arme lorsqu'elle est tirée.
Descendants de configuration :

- NumMuzzleParticles (IntValue) (optionnel) — Nombre de particules de bouche qui seront émises ; par défaut 50.
Pour l'effet de tir spécifié, ajoutez un actif ParticleEmitter à WeaponsSystem/Assets/Effects/Shots nommé MuzzleParticles.

Flashes de bouche
Cette option crée un effet de flash Beam lorsque l'arme est tirée.
Descendants du modèle :

- MuzzleFlash0 (Attachment) — Utilisé pour spécifier un côté du flash de bouche. La position n'a pas d'importance.
- MuzzleFlash1 (Attachment) — Utilisé pour spécifier le côté opposé du flash de bouche. La position n'a pas d'importance.
- MuzzleFlash (Beam) — Assurez-vous de définir Attachment0 sur MuzzleFlash0 et Attachment1 sur MuzzleFlash1.
Descendants de configuration :

- MuzzleFlashTime (NumberValue) (optionnel) — Durée pendant laquelle le flash de bouche sera visible ; par défaut 0.03.
- MuzzleFlashRotation0 (NumberValue) (optionnel) — Rotation minimale du flash de bouche ; par défaut -math.pi.
- MuzzleFlashRotation1 (NumberValue) (optionnel) — Rotation maximale du flash de bouche ; par défaut math.pi.
Traînées de particules
Cette option crée une traînée de longueur variable de l'arme au point d'impact du projectile.
Descendants de configuration :

- TrailLength (NumberValue) (optionnel) — Longueur de la traînée derrière la balle/projectile ; par défaut nil ce qui signifie que la longueur de la traînée sera calculée en utilisant TrailLengthFactor.
- TrailLengthFactor (NumberValue) (optionnel) — La longueur de la traînée sera définie sur cette valeur multipliée par la distance parcourue par la balle/projectile dans la dernière image ; par défaut 1. Notez que ceci sera écrasé si vous incluez TrailLength.
- ShowEntireTrailUntilHit (BoolValue) (optionnel) — Définit sur true pour rendre la traînée visible de la pointe de l'arme jusqu'à l'emplacement où le projectile se trouve ; cela écrasera à la fois TrailLength et TrailLengthFactor et la traînée disparaîtra uniquement une fois que le projectile touchera quelque chose. Définit sur false pour utiliser l'une des deux options ci-dessus pour calculer la longueur de la traînée. Par défaut false.
Marqueurs de coup
Cette addition visuelle apparaît sur la surface où les projectiles touchent et est utile pour les flèches, les impacts de balles, les marques de brûlure, etc.
Descendants de configuration :

- HitMarkEffect (StringValue) (optionnel) — Nom de l'effet de marque de coup stocké dans WeaponsSystem/Assets/Effects/HitMarks ; par défaut BulletHole.
- AlignHitMarkToNormal (BoolValue) (optionnel) — Définissez sur true si la marque d'impact doit toujours s'aligner à plat contre la surface comme un impact de balle, ou false si la marque d'impact doit apparaître enfoncée dans la surface dans la direction d'où le projectile est venu (comme une flèche). Par défaut true.
Vous pouvez ajouter l'actif optionnel suivant dans WeaponsSystem/Assets/Effects/HitMarks :

- Glow (Decal) (optionnel) — Apparaît sur la surface touchée complètement opaque, puis devient rapidement plus transparent, comme un effet de lueur sur la surface qui s'estompe rapidement. Utile pour montrer une marque rouge lumineuse où les explosifs ont touché.
- BulletHole (Decal) (optionnel) — Apparaît sur la surface touchée complètement opaque et, après 4 secondes, s'estompe en transparent sur 1 seconde.
- ImpactBillboard (BillboardGui) (optionnel) — S'affiche à la surface touchée, toujours face à la caméra.
- Impact (ImageLabel) (optionnel) — Enfant direct de ImpactBillboard ; commence complètement opaque, grandit jusqu'à atteindre la taille complète de ImpactBillboard en 0.1 secondes, puis rétrécit à la moitié de sa taille et s'estompe en transparence complète sur 0.1 secondes.
- N'importe quelle Part/MeshPart/SpecialMesh que vous souhaitez faire apparaître comme un projectile physique (optionnel). Par exemple, inclure une flèche MeshPart et définir AlignHitMarkToNormal mentionné ci-dessus sur false fera en sorte que la flèche dépasse de la surface dans la direction où vous l'avez tirée.
Projectiles explosifs
Les projectiles peuvent inclure un objet Explosion pour endommager les personnages joueurs dans un rayon autour du point d'impact.
Descendants de configuration :

- ExplodeOnImpact (BoolValue) (optionnel) — Définit sur true si vous voulez que les balles/projectiles de l'arme explosent à l'impact, false sinon. Par défaut false.
- BlastDamage (NumberValue) (optionnel) — Dégâts infligés aux choses au centre de l'explosion. Notez que l'explosion inflige moins de dégâts plus les objets touchés sont éloignés du centre de l'explosion. Par défaut 100.
Armes à chargement
Une arme à chargement comme le Railgun doit être chargée entre les tirs avant de pouvoir à nouveau tirer.
Descendants du modèle :

- Charging (Sound) (optionnel) — Joue pendant que l'arme se charge.
- Discharging (Sound) (optionnel) — Joue lorsque l'arme se décharge, par exemple si vous chargez l'arme juste partiellement et relâchez le bouton de tir.
- ChargeComplete (Sound) (optionnel) — Joue lorsque l'arme a atteint la charge complète.
- DischargeComplete (Sound) (optionnel) — Joue lorsque l'arme s'est complètement déchargée.
- ChargeGlow (BasePart) (optionnel) — Cet objet deviendra moins transparent à mesure que l'arme se charge, de sorte qu'il soit complètement opaque à 100% de charge.
- ChargeCompleteParticles (ParticleEmitter) (optionnel) — Émet lorsque l'arme a fini de charger. Cet émetteur peut être un enfant de n'importe quel modèle BasePart ou un enfant d'un Attachment dans le BasePart.
- DischargeCompleteParticles (ParticleEmitter) (optionnel) — Émet lorsque l'arme s'est complètement déchargée. Cet émetteur peut être un enfant de n'importe quel modèle BasePart ou un enfant d'un Attachment dans le BasePart.
- ChargingParticles (ParticleEmitter) (optionnel) — Émet pendant que l'arme se charge. Vous pouvez inclure plusieurs émetteurs de ce nom et chacun émettra en chargeant. Cet émetteur peut être un enfant de n'importe quel modèle BasePart ou un enfant d'un Attachment dans le BasePart.
Descendants de configuration :

- ChargeRate (NumberValue) — Vitesse à laquelle l'arme se chargera. Cette valeur doit être spécifiée pour indiquer que l'arme utilise le chargement.
- DischargeRate (NumberValue) (optionnel) — Vitesse à laquelle l'arme se décharge ; par défaut 0 ce qui signifie que l'arme ne se déchargera pas du tout.
- ChargePassively (BoolValue) (optionnel) — Définissez sur true si vous voulez que l'arme se charge passivement pour pouvoir tirer instantanément lorsque vous cliquez, ou false si vous voulez cliquer/toucher pour charger l'arme et la faire tirer une fois la charge complète atteinte. Par défaut est false.
- ChargingParticlesRatePerCharge (IntValue) (optionnel) — Nombre de particules qui seront émises par tous les émetteurs ChargingParticles multiplié par la charge actuelle de l'arme. Par défaut 20, ce qui signifie que si la charge de l'arme est à 10%, chaque émetteur ChargingParticles émettra 2 particules (20×0.1), et si la charge de l'arme est à 90%, chaque émetteur émettra 18 particules (20×0.9).
- FireDischarge (NumberValue) (optionnel) — Montant de charge que l'arme perdra après avoir tiré un tir complètement chargé ; par défaut 1.
- NumChargeCompleteParticles (IntValue) (optionnel) — Nombre de particules que l'émetteur ChargeCompleteParticles émettra une fois que l'arme est complètement chargée. Par défaut 25.
- NumDischargeCompleteParticles (IntValue) (optionnel) — Nombre de particules que l'émetteur DischargeCompleteParticles émettra lorsque l'arme est complètement déchargée. Par défaut 25.
Arme à arbalète
Une arme à arbalète comme la Crossbow peut inclure une construction de corde et de bras réaliste, ainsi qu'une flèche visuelle nocked à la corde.
En plus d'ajouter des descendants de modèles, vous devez appliquer ce qui suit :
- Faites de l'arme une arme à chargement. Par exemple, ajoutez le ChargeRate requis dans la Configuration de l'arme qui spécifie la vitesse à laquelle la corde est tendue. De plus, considérez ajouter des descendants optionnels au modèle de l'arme tels qu'un son Charging pour la corde/bras tirés en arrière.
Descendants du modèle :

- LeftString (Beam) (optionnel) — La moitié gauche visuelle de la corde.
- RightString (Beam) (optionnel) — La moitié droite visuelle de la corde.
- Arrow (BasePart) (optionnel) — La flèche qui apparaît lorsque l'arbalète est complètement tendue. Notez que ceci est seulement pour l'apparence visuelle sur l'arbalète (la flèche réellement tirée sera un ShotEffect comme décrit dans Projectile/Hits Effects and Sounds).
- String1 (Attachment) (optionnel) — Le point central de la corde.
- StringLoose (Attachment) (optionnel) — Point où String1 devrait être lorsque l'arbalète est au repos.
- StringTight (Attachment) (optionnel) — Point où String1 devrait être lorsque l'arbalète est complètement tendue.
- Arms (Part) (optionnel) — Une partie qui sert seulement d'indicateur interne que les bras de l'arbalète seront animés. Cela peut contenir les enfants directs suivants :
- LeftString0 (Attachment) (optionnel) — Point où le côté gauche de la corde est attaché à l'arbalète.
- RightString0 (Attachment) (optionnel) — Point où le côté droit de la corde est attaché à l'arbalète.
- LeftLoose (Attachment) (optionnel) — Point où LeftString0 devrait être lorsque l'arbalète est au repos.
- RightLoose (Attachment) (optionnel) — Point où RightString0 devrait être lorsque l'arbalète est au repos.
- LeftTight (Attachment) (optionnel) — Point où LeftString0 devrait être lorsque l'arbalète est complètement tendue.
- RightTight (Attachment) (optionnel) — Point où RightString0 devrait être lorsque l'arbalète est complètement tendue.
- [SpecialMesh] (SpecialMesh) (optionnel) — La partie de l'arbalète qui se pliera réellement lorsque l'arbalète est tirée. Notez que vous devez spécifier les quatre objets Vector3Value suivants pour animer cela.
- TightOffset (Vector3Value) (optionnel) — Décalage du SpecialMesh lorsque l'arbalète est complètement tendue.
- TightScale (Vector3Value) (optionnel) — Échelle du SpecialMesh lorsque l'arbalète est complètement tendue.
GUI du système d'armes
Le système principal d'armes interagit avec ce système pour mettre à jour le GUI en fonction de choses comme l'écart de l'arme, les indicateurs pour quand vous êtes touché ou avez touché d'autres, etc.
Le WeaponsSystemGui est un objet ScreenGui dans WeaponsSystem/Assets qui est parenté à PlayerGui lorsque l'expérience débute. Le WeaponsSystemGui a 4 descendants :
- ScalingElements - Un Folder d'éléments d'écran.
- LargeTouchscreen - Un Frame pour les boutons sur de grands écrans tactiles.
- SmallTouchscreen - Un Frame pour les boutons sur de petits écrans tactiles.
Éléments de mise à l'échelle
ScalingElements est un Folder parenté sous WeaponsSystemGui avec les descendants suivants :
| Nom | Type d'instance | Description |
|---|---|---|
| DirectionalIndicators | Folder | Un Folder où tous les indicateurs directionnels sont stockés. |
| Crosshair | Frame | Un Frame contenant les objets suivants : [UIAspectRationConstraint] - UIAspectRatioConstraint Bottom - ImageLabel Left - ImageLabel Right - ImageLabel Top - ImageLabel |
| HitMarker | Frame | Un Frame contenant les objets suivants : [UIAspectRatioConstraint] - UIAspectRatioConstraint HitMarkerImage - ImageLabel qui apparaît et s'estompe lorsque le joueur touche un autre personnage joueur avec succès. |
Grand écran tactile
LargeTouchscreen est un Frame contenant des boutons qui s'affichent sur de grands écrans tactiles. LargeTouchscreen a les descendants suivants :
- AimButton (ImageButton)
- FireButton (ImageButton)
Lunette
Scope est un Frame qui contient ScopeImage (ImageLabel) qui apparaît lors du zoom avec une arme avec HasScope activé (voir Structure de l'arme).
Scope a les descendants suivants :
| Nom | Type d'instance | Description |
|---|---|---|
| ScopeInstance | Frame | Un Frame contenant les actifs suivants utilisés lors du zoom sur une arme avec HasScope activé : [UIAspectRationConstraint] - UIAspectRatioConstraint BottomBlack - Frame LeftBlack - Frame RightBlack - Frame TopBlack - Frame |
Petit écran tactile
SmallTouchScreen est un Frame contenant des boutons qui s'affichent sur de petits écrans tactiles. SmallTouchscreen a les descendants suivants :
- AimButton (ImageButton)
- FireButton (ImageButton)
Créer un indicateur directionnel
Les indicateurs directionnels sont utilisés pour montrer la direction de quelque chose autour du réticule du joueur. Par exemple, si quelqu'un vous tire dessus, un demi-cercle rouge peut apparaître autour de votre réticule dans la direction d'où le tir est parti. D'autres exemples incluent des indicateurs pour montrer la direction des pas, des tirs indirects, ou même des objets environnementaux tels que des coffres.
Pour créer un nouvel indicateur, ajoutez un nouvel indicateur Frame dans WeaponsSystemGui/ScalingElements/DirectionalIndicators avec la structure suivante :
| Nom | Type d'instance | Description |
|---|---|---|
| [UIAspectRationConstraint] | UIAspectRatioConstraint | |
| [ImageLabel] | ImageLabel | Image de l'indicateur directionnel. Un ajustement de la rotation de l'image dans Studio peut être nécessaire, à moins que vous ne téléchargiez l'image de manière à ce qu'elle soit orientée vers le bas et qu'il y ait peu ou pas d'espace vide autour. Cette étiquette d'image doit également contenir son propre UIAspectRatioConstraint. |
| [Configuration] | Configuration | Contient des propriétés optionnelles à ajuster. Voir Configuration de l'indicateur pour plus d'informations. |
Une fois créé, vous pouvez activer un indicateur via la commande suivante à l'intérieur de WeaponsSystem/Libraries/WeaponsGui où indicatorName est le nom de chaîne de l'indicateur à activer et worldPos est la position mondiale où l'indicateur directionnel doit pointer :
self.DirectionalIndicatorGuiManager:ActivateDirectionalIndicator(indicatorName, worldPos)
Configuration de l'indicateur
Les DirectionalIndicators peuvent être modifiés en ajustant l'objet Configuration parenté au [Indicator]. Tous ces paramètres ont une valeur par défaut, donc il n'est pas nécessaire de définir des configurations lorsqu'aucun réglage n'est modifié.
Les configurations suivantes peuvent être définies :
| Nom | Type d'instance | Description |
|---|---|---|
| DistanceLevelFromCenter | NumberValue | Nombre de niveaux de distance depuis le centre de l'écran (chaque niveau de distance est d'environ 0.03 échelle d'écran) ; par défaut 6. |
| FadeTime | NumberValue | Temps de fondu de l'indicateur suite à son activation et le temps TimeBeforeFade ; par défaut 1. |
| Name | StringValue | Nom de l'indicateur directionnel tel que vous souhaitez le référencer dans le code ; par défaut est le nom du Frame de niveau supérieur de l'indicateur. |
| TimeBeforeFade | NumberValue | Nombre de secondes durant lesquelles l'indicateur apparaîtra avant de s'estomper ; par défaut 1. |
| TransparencyBeforeFade | NumberValue | Transparence de l'indicateur avant qu'il ne commence à s'estomper ; par défaut 0. |
| WidthLevel | NumberValue | Nombre de niveaux de largeur depuis le centre (chaque niveau de largeur est d'environ 0.03 échelle d'écran) ; par défaut est la valeur de DistanceLevelFromCenter. |
Afficher le panneau de dégâts
Le panneau de dégâts est utilisé pour afficher de petits numéros au-dessus de la tête d'un personnage lorsqu'il est blessé. Ceux-ci n'apparaîtront que pour le joueur qui a infligé des dégâts à un autre personnage joueur, et non pour les joueurs en spectateur.
Les panneaux de dégâts sont gérés dans WeaponsSystem/Libraries/DamageBillboardHandler et peuvent être activés depuis n'importe quel code côté client comme suit, où damage est le montant de dégâts infligés et adornmentPart est la partie sur laquelle décorer le panneau, comme la tête de la victime :
DamageBillboardHandler:ShowDamageBillboard(damage, adornmentPart)
Caméra à l'épaule
La caméra à l'épaule est une caméra à la troisième personne qui regarde par-dessus l'épaule droite du personnage joueur. Pour personnaliser la caméra à l'épaule, modifiez les variables sous le commentaire -- Paramètres de configuration (constantes) dans la fonction ShoulderCamera.new() de WeaponsSystem/Libraries/ShoulderCamera. Vous pouvez modifier des éléments tels que le champ de vision, le décalage par rapport au personnage, la vitesse de marche pendant le sprint ou le zoom, etc.
Contrôle du sprint et du zoom
Par défaut, le système d'armes ajoute une capacité de "sprint", de sorte que les joueurs peuvent sprinter en maintenant la touche Shift, en poussant complètement vers le haut sur le joystick dynamique (mobile), ou en poussant complètement vers le haut sur le joystick gauche (manette). Si vous souhaitez désactiver le sprint, définissez la valeur de SprintEnabled dans WeaponsSystem/Configuration sur false.
Le système réduit également la vitesse des joueurs lorsqu'ils visent/zoomez, mais vous pouvez désactiver ce comportement en définissant la valeur de SlowZoomWalkEnabled sur false.









