Créer des équipes vous permet de trier les joueurs en groupes qui rivalisent pour atteindre un objectif commun, comme marquer le plus de points ou franchir une ligne d'arrivée avant d'autres membres de l'équipe adverse. Pour un jeu de tir à la première personne, la création d'équipes est particulièrement importante car elle établit des stratégies de jeu complexes et coordonnées qui dépassent les compétences d'un joueur individuel.
En utilisant l'expérience de laser tag échantillon comme référence, cette section du tutoriel vous apprend à trier les joueurs en équipes, y compris des conseils de script sur :
- Utiliser la fonctionnalité par défaut du service Teams pour assigner les joueurs soit à l'équipe verte, soit à l'équipe rose.
- Aider les joueurs à différencier leurs alliés et les membres de l'équipe ennemie à travers des indicateurs d'équipe à l'écran et dans l'expérience.
- Permettre un gameplay indulgent qui ne sanctionne pas les joueurs pour avoir tiré sur leurs coéquipiers.
Après avoir terminé cette section, vous en apprendrez davantage sur les scripts qui permettent aux joueurs de naître ou de réapparaître dans un hall ou une zone de naissance neutre, de personnaliser les visuels du champ de force en première personne et de gérer l'état client à la fois depuis le serveur et le client.

Assigner des couleurs d'équipe
L'expérience de laser tag échantillon utilise le service Teams comme base pour créer deux équipes car le service offre un comportement de tri des équipes intégré qui fonctionne généralement sans configuration supplémentaire. Par exemple, sans aucun effort de script supplémentaire, le service gère des actions comme :
- Trier et équilibrer les joueurs de manière égale dans chaque équipe.
- Regrouper les joueurs sous leur équipe sur le tableau des leaders.
- Teinter les noms des joueurs dans l'espace 3D à la couleur de leur équipe correspondante.
- Faire apparaître les joueurs à des emplacements de naissance distincts auxquels seule leur équipe peut accéder.
En raison de cette fonctionnalité par défaut, l'échantillon active le service Teams, puis utilise deux objets Team distincts avec différentes valeurs de propriété Team.Color pour représenter chaque équipe : mint pour l'équipe qui se regroupe d'un côté de la carte, et rose carna pour l'équipe qui se regroupe de l'autre côté de la carte. Ces couleurs spécifiques sont utiles car elles sont complémentaires, ce qui signifie qu'elles se contrastent bien, et elles permettent aux joueurs de scanner facilement leurs environs et de se repérer dans le bâtiment et par rapport à d'autres joueurs.




Il est important de noter le nom exact de BrickColor pour la propriété Team.Color car l'expérience utilise ce nom dans de nombreux scripts de l'expérience pour suivre les joueurs lorsqu'ils se trient en équipes, incrémenter des points lorsque les joueurs taguent des joueurs ennemis pendant un round, et mettre à jour des éléments d'interface utilisateur personnalisés. Par exemple, lorsqu'un round commence, ReplicatedStorage ⟩ HUDGuiSetup nécessite startSyncingTeamColor, et startSyncingTeamPoints qui référencent tous deux Team.Color pour effectuer des actions uniques pour chaque équipe.
startSyncingTeamColor référence Team.Color afin qu'il puisse assigner la bonne couleur et icône pour l'indicateur d'équipe du joueur dans le coin inférieur gauche de son écran.


local function setPlayerTeamIcon(gui: ScreenGui)
for _, teamColorIcon in gui.PlayerDisplay.TeamIcons:GetChildren() do
local iconTeamColor = teamColorIcon:GetAttribute(GuiAttribute.teamColor)
teamColorIcon.Visible = localPlayer.TeamColor == iconTeamColor
end
end
local function startSyncingTeamColor(gui: ScreenGui)
setPlayerTeamIcon(gui)
localPlayer:GetPropertyChangedSignal("Team"):Connect(function()
setPlayerTeamIcon(gui)
end)
end
Afficher les indicateurs d'équipe
Une fois qu'un joueur est trié dans une équipe, il doit pouvoir rapidement identifier à quelle équipe il appartient et différencier ses alliés des membres de l'équipe ennemie. Cette capacité est importante car le gameplay d'une expérience de tir à la première personne exige que les joueurs prennent des décisions stratégiques rapides pendant qu'ils se trouvent dans des zones de combat afin de ne pas se faire taguer et perdre le round.
Pour préparer les joueurs à réussir, l'expérience de laser tag échantillon fournit plusieurs indicateurs d'équipe à la fois à l'écran et dans l'espace 3D :
- Indicateur de joueur – UI personnalisée à l'écran affichant la couleur et l'icône de l'équipe du joueur.
- Indicateur d'équipe – UI personnalisée dans l'expérience affichant la couleur de l'équipe du joueur.
- Indicateur de tableau des leaders – UI par défaut du service Teams qui regroupe les joueurs sous la couleur de leur équipe.
- Teinte de nom – UI par défaut du service Teams qui teinte le nom du joueur au-dessus de sa tête de la couleur de son équipe.




Vous n'avez pas besoin de faire de travail supplémentaire pour l'indicateur de tableau des leaders ou la teinte de nom en dehors de l'attribution des couleurs d'équipe de la section précédente du tutoriel, mais les indicateurs d'équipe UI personnalisés nécessitent plus d'efforts de programmation pour afficher les indicateurs et occlure les indicateurs ennemis lorsqu'ils sont derrière des murs. Pour une explication complète des scripts qui contrôlent le comportement de l'UI personnalisée, ainsi que sur la façon de mettre en œuvre chaque élément d'UI, consultez Indicateur de joueur et Indicateur d'équipe du Curriculum UI.
Désactiver le tir ami
Bien que certaines expériences de tir à la première personne pénalisent les joueurs qui tirent sur leurs propres coéquipiers, l'expérience de laser tag échantillon permet un gameplay plus indulgent en désactivant le tir ami. Cette décision de conception permet à chacun d'augmenter uniquement son score d'équipe, sans le diminuer à cause d'accidents de jeu.
Pour comprendre comment l'échantillon implémente cette fonctionnalité, examinez comment ServerScriptService ⟩ LaserBlastHandler ⟩ processTaggedPlayers ⟩ onPlayerTagged gère les dégâts infligés aux joueurs marqués. Lorsque le serveur détecte une collision entre le tir d'un joueur et un autre joueur, il appelle la fonction onPlayerTagged pour comprendre quel joueur a tiré, quel joueur a été touché par le tir et combien de points de vie doivent être retirés du joueur selon le type de blaster.
local function onPlayerTagged(playerBlasted: Player, playerTagged: Player, damageAmount: number)
Avant de diminuer les points de vie, le script vérifie d'abord si le joueur marqué est dans la même équipe que le joueur qui a initié le tir. S'ils sont dans la même équipe, le script ignore complètement les données du tir.
local character = playerTagged.Characterlocal isFriendly = playerBlasted.Team == playerTagged.Team-- Interdire le tir amiif isFriendly thenreturnend
Cependant, si le joueur marqué est dans l'équipe ennemie, le joueur subit le bon montant de dégâts selon le type de blaster. De plus, si le joueur subit suffisamment de dégâts pour être marqué, le script attribue un point à l'équipe du joueur qui a initié le tir. Pour plus d'informations sur la façon dont l'échantillon suit les points, consultez Ajouter des rounds plus loin dans le tutoriel.
local humanoid = character and character:FindFirstChild("Humanoid")if humanoid and humanoid.Health > 0 thenlocal damage = math.min(damageAmount, humanoid.Health)humanoid:TakeDamage(damage)if humanoid.Health <= 0 thenScoring.incrementScore(playerBlasted, 1)endendendreturn onPlayerTagged
Si vous deviez tester l'expérience en ce moment, tous les joueurs apparaîtraient aléatoirement à l'une ou l'autre des zones de naissance aux extrémités opposées de l'arène, peu importe à quelle équipe ils appartiennent, ce qui signifie que chaque équipe apparaîtrait juste à côté de l'autre.
Pour remédier à cette situation, la section suivante du tutoriel vous enseignera la logique personnalisée derrière la restriction de la naissance des équipes à certains emplacements de naissance, la gestion de l'état client lorsque les joueurs quittent la zone de naissance après avoir sélectionné leur blaster, et la réapparition des joueurs dans leur zone de naissance ou zone de hall lorsque leur santé atteint zéro.