Créer des équipes

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Créer des équipes vous permet de trier les joueurs dans des groupes qui compèrent pour terminer un objectif commun, comme le score le plus de points ou le franchissement d'une ligne d'arrivée avant les autres membres d'équipe ennemis. Pour un tireur de première personne, la création de команas est particulièrement importante car elle établit des stratégies de jeu complexes et coordonnées au-delà du jeu de compétence de n'importe quel joueur individuel.

En utilisant l'expérience de balise laser échantillon comme référence, cette section du tutoriel vous apprend à trier les joueurs en équipes, y compris les conseils de script sur :

  • En utilisant la fonctionnalité par défaut du service Teams, vous pouvez attribuer des joueurs à l'équipe verte ou rose.
  • Aider les joueurs à se différencier entre leurs alliés et les membres de l'équipe ennemie grâce à des indicateurs d'équipe et à des expériences sur l'écran.
  • Activer le jeu pardonnant qui ne pénalise pas les joueurs pour avoir fait exploser leur coéquipier.

Après avoir terminé cette section, vous en apprendrez sur les scripts qui permettent aux joueurs de générer ou de réapparaître dans une zone de lobby neutralise ou d'équipe, personnaliser les visuels de champ de force en première personne et gérer l'état du client, soit du serveur que du client.

Attribuer des couleurs d'équipe

L'expérience de laser de poche utilise le service Teams comme base pour créer deux équipes parce que le service offre un comportement de tri d'équipe intégré qui fonctionne largement hors de la boîte. Par exemple, sans effort supplémentaire de script, le service gère des actions comme :

  • Trie et équilibrage des joueurs de manière égale dans chaque équipe.
  • Grouper les joueurs sous leur équipe dans le classements.
  • Teintur les noms des joueurs dans l'espace 3D pour leur couleur de l'équipe correspondante.
  • Générer des joueurs à des endroits de génération distincts que seul leur équipe peut accès.

En raison de cette fonctionnalité par défaut, l'échantillon permet au service Teams d'utiliser deux objets Team avec des propriétés de valeur Team.Color différents

Il est important de noter le nom exact de BrickColor pour la propriété Team.Color car l'expérience utilise

startSyncingTeamColor références Team.Color afin qu'il puisse attribuer la bonne couleur et l'icône pour l'indicateur de l'équipe du joueur dans le coin inférieur gauche de leur écran.

Équipe verte
Équipe Rose

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 de l'équipe

Une fois qu'un joueur a été classé dans une équipe, il doit être capable de déchiffrer rapidement à quelle équipe il appartient et de différentier entre ses alliés et les membres de l'équipe ennante. Cette capacité est importante car la jouabilité d'un jeu de tir à la première personne exige que les joueurs prennent des décisions stratégiques rapides lorsqu'ils sont dans les zones de combat afin qu'ils ne soient pas tagués et perdent la manche.

Pour configurer les joueurs pour le succès, l'expérience de marquage laser fournit plusieurs indicateurs d'équipe à l'écran et dans l'espace 3D :

  • Indicateur du joueur – Personnalisez l'interface de l'utilisateur sur l'écran qui affiche la couleur et l'icône de l'équipe du joueur.
  • Indicateur d'équipe – Personnalisez l'interface de l'expérience qui affiche la couleur de l'équipe du joueur.
  • Leaderboard Indicator – Service d'interface utilisateur par défaut qui regroupe les joueurs sous leur couleur d'équipe.
  • Nom Tint – Service d'équipe par défaut dans l'interface de l'utilisateur qui teint le nom du joueur au-dessus de leur tête dans leur couleur d'équipe.
Indicateurs sur l'écran >
Indicateur du joueur
Indicateur de classement
Indicateurs d'expérience
Indicateur d'équipe
Couleur du nom

Vous n'avez pas besoin de faire de travail supplémentaire pour l'indicateur de classement ou la teinture de nom en dehors de l'attribution des couleurs d'équipe à partir de la section précédente du tutoriel, mais les indicateurs personnalisés exigent plus d'effort de programmation pour afficher les indicateurs et exclure les indicateurs ennemis lorsqu'ils sont derrière des murs. Pour une explication

Désactiver les feux d'artifice amicaux

Bien que certains jeux de tir en première personne pénalisent les joueurs qui explosent leurs coéquipiers, l'expérience de laser de police permet un jeu plus tolérant en désactivant le lancerd'amitié. Cette décision de conception permet à tout le monde de ne augmenter que le score de leur équipe, pas de le soustraire en raison des accidents de jeu.

Pour comprendre comment le script d'exemple implémente cette fonctionnalité, examinez comment ServerScriptService > LaserBlastHandler > processTaggedPlayers > 1> onPlayerTagged1> gère les dégâts à tagged les jou


local function onPlayerTagged(playerBlasted: Player, playerTagged: Player, damageAmount: number)

Avant qu'il réduise la santé, le script vérifie d'abord si le joueur tagué est dans la même équipe que le joueur qui a initialisé l'explosion. S'il est dans la même équipe, le script ignore les données d'explosion entièrement.


local character = playerTagged.Character
local isFriendly = playerBlasted.Team == playerTagged.Team
-- Désactiver le lancer
if isFriendly then
return
end

Cependant, si le joueur marqué est sur l'équipe ennemi, le joueur prend la quantité appropriée de dégâts en fonction du taperde blaster. De plus, si le joueur prend suffisamment de dégâts pour devenir tagué, le script récompense un point à l'équipe du joueur qui a initialisé le blast. Pour plus d'informations sur la façon dont les points sont suivis, voir ajouter des tours plus tard dans le tutoriel.


local humanoid = character and character:FindFirstChild("Humanoid")
if humanoid and humanoid.Health > 0 then
local damage = math.min(damageAmount, humanoid.Health)
humanoid:TakeDamage(damage)
if humanoid.Health <= 0 then
Scoring.incrementScore(playerBlasted, 1)
end
end
end
return onPlayerTagged

Si vous testiez l'expérience en ce moment, tous les joueurs apparaîtraient au hasard dans l'une des zones d'apparition à chaque extré de l'arène, indépendamment de l'équipe à laquelle ils appartiennent, ce qui signifie que chaque équipe apparaîtraait juste à côté de l'autre.

Pour résoudre ce problème, la section suivante du tutoriel vous apprend à propos de la logique personnalisée derrière la restreinte de l'apparition d'équipe à certains endroits d'apparition, le traitement du client état lorsque les joueurs quittent la zone d'apparition après avoir sélectionné leur blaster, et le réapparition des joueurs dans leur zone d'apparition ou leur zone de lobby lorsque leur santé atteint zéro.