Crear equipos

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

Crear equipos te permite clasificar a los jugadores en grupos que compiten para completar un objetivo común, como anotar la mayor cantidad de puntos o cruzar una línea de meta antes que los otros miembros del equipo enemigo. Para un juego de disparos en primera persona, crear equipos es particularmente importante porque establece estrategias de juego coordinadas y complejas más allá de las habilidades individuales de cualquier jugador.

Usando la experiencia de muestra de laser tag como referencia, esta sección del tutorial te enseñará a clasificar a los jugadores en equipos, incluyendo orientación sobre la programación en:

  • Usar la funcionalidad predeterminada del servicio Teams para asignar a los jugadores al equipo verde o al equipo rosa.
  • Ayudar a los jugadores a diferenciar entre sus aliados y los miembros del equipo enemigo a través de indicadores de equipo en pantalla y dentro de la experiencia.
  • Habilitar un juego indulgente que no penalice a los jugadores por disparar a sus compañeros de equipo.

Después de completar esta sección, aprenderás sobre los scripts que permiten a los jugadores aparecer o reaparecer en un vestíbulo neutral o zona de aparición de equipo, personalizar los visuales del campo de fuerza en primera persona, y manejar el estado del cliente tanto desde el servidor como desde el cliente.

Asignar colores de equipo

La experiencia de muestra de laser tag utiliza el servicio Teams como base para crear dos equipos porque el servicio ofrece un comportamiento de clasificación de equipos integrado que funciona bien de manera general. Por ejemplo, sin ningún esfuerzo adicional de programación, el servicio maneja acciones como:

  • Clasificar y equilibrar a los jugadores uniformemente en cada equipo.
  • Agrupar a los jugadores bajo su equipo en la tabla de clasificación.
  • Tintear los nombres de los jugadores en el espacio 3D a su color de equipo correspondiente.
  • Hacer aparecer a los jugadores en ubicaciones de aparición distintas a las que solo su equipo puede acceder.

Debido a esta funcionalidad predeterminada, la muestra habilita el servicio Teams, y luego usa dos objetos Team distintos con diferentes valores de propiedades Team.Color para representar cada equipo: menta para el equipo que se reúne en un lado del mapa, y rosa carnal para el equipo que se reúne en el lado opuesto del mapa. Estos colores específicos son útiles porque son complementarios, lo que significa que contrastan bien entre sí, y permiten a los jugadores escanear fácilmente su entorno y orientarse dentro del edificio y hacia otros jugadores.

Es importante notar el nombre exacto de BrickColor para la propiedad Team.Color porque la experiencia utiliza este nombre en muchos scripts para hacer un seguimiento de los jugadores mientras se clasifican en equipos, incrementar puntos a medida que los jugadores eliminan a los jugadores enemigos durante una ronda, y actualizar elementos de UI personalizados. Por ejemplo, cuando comienza una ronda, ReplicatedStorageHUDGuiSetup requiere startSyncingTeamColor y startSyncingTeamPoints, que ambos hacen referencia a Team.Color para realizar acciones únicas para cada equipo.

startSyncingTeamColor hace referencia a Team.Color para poder asignar el color correcto y el ícono para el indicador de equipo del jugador en la esquina inferior izquierda de su pantalla.

Equipo Verde
Equipo Rosa

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

Mostrar indicadores de equipo

Una vez que un jugador es clasificado en un equipo, necesita poder descifrar rápidamente a qué equipo pertenece y diferenciar entre sus aliados y los miembros del equipo enemigo. Esta capacidad es importante porque el juego de un experiencia de disparos en primera persona requiere que los jugadores tomen decisiones estratégicas rápidas mientras están en zonas de combate para no ser eliminados y perder la ronda.

Para preparar a los jugadores para el éxito, la experiencia de muestra de laser tag proporciona múltiples indicadores de equipo tanto en pantalla como en el espacio 3D:

  • Indicador de Jugador – UI personalizada en pantalla que muestra el color y el ícono del equipo del jugador.
  • Indicador de Equipo – UI personalizada dentro de la experiencia que muestra el color del equipo del jugador.
  • Indicador de Tabla de Clasificación – UI predeterminada del servicio de Equipos que agrupa a los jugadores debajo de su color de equipo.
  • Tinte de Nombre – UI predeterminada del servicio de Equipos que tiñe el nombre del jugador sobre su cabeza a su color de equipo.
Indicadores en Pantalla
Indicador de Jugador
Indicador de Tabla de Clasificación
Indicadores en la Experiencia
Indicador de Equipo
Tinte de Nombre

No necesitas hacer ningún trabajo adicional para el Indicador de Tabla de Clasificación o el Tinte de Nombre fuera de asignar los colores de equipo de la sección anterior del tutorial, pero los indicadores de equipo personalizados de UI requieren más esfuerzo de programación tanto para mostrar los indicadores como para ocultar los indicadores enemigos cuando están detrás de muros. Para una explicación completa de los scripts que controlan el comportamiento de la UI personalizada, así como cómo implementar cada elemento de UI, consulta Indicador de Jugador y Indicador de Equipo del Currículo de UI.

Deshabilitar el fuego amigo

Mientras algunas experiencias de disparos en primera persona penalizan a los jugadores que disparan a sus propios compañeros, la experiencia de muestra de laser tag permite un juego más indulgente al deshabilitar el fuego amigo. Esta decisión de diseño permite que todos solo aumenten su puntuación de equipo, y no la restan debido a accidentes durante el juego.

Para entender cómo la muestra implementa esta funcionalidad, examina cómo ServerScriptServiceLaserBlastHandlerprocessTaggedPlayersonPlayerTagged maneja el daño a los jugadores etiquetados. Cuando el servidor detecta una colisión entre el disparo de un jugador y otro jugador, llama a la función onPlayerTagged para entender qué jugador disparó, qué jugador fue golpeado por el disparo y cuánto daño debe quitar de la salud del jugador según el tipo de blaster.


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

Antes de disminuir la salud, el script primero verifica si el jugador etiquetado está en el mismo equipo que el jugador que inició el disparo. Si están en el mismo equipo, el script ignora completamente los datos del disparo.


local character = playerTagged.Character
local isFriendly = playerBlasted.Team == playerTagged.Team
-- Deshabilitar fuego amigo
if isFriendly then
return
end

Sin embargo, si el jugador etiquetado está en el equipo enemigo, el jugador recibe la cantidad apropiada de daño según el tipo de blaster. Además, si el jugador recibe suficiente daño para ser etiquetado, el script recompensa un punto al equipo del jugador que inició el disparo. Para más información sobre cómo la muestra rastrea los puntos, consulta Agregar rondas más adelante en el tutorial.


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 probaras la experiencia en este momento, todos los jugadores aparecerían aleatoriamente en cualquiera de las zonas de aparición en los extremos opuestos de la arena sin importar a qué equipo pertenecen, lo que significaría que cada equipo aparecería justo al lado del otro.

Para abordar este problema, la siguiente sección del tutorial te enseñará sobre la lógica personalizada detrás de restringir la aparición de equipos a ciertas ubicaciones de aparición, manejar el estado del cliente a medida que los jugadores abandonan el área de aparición después de seleccionar su blaster, y reaparecer a los jugadores de regreso a su zona de aparición o área de vestíbulo cuando su salud llegue a cero.

©2026 Roblox Corporation. Roblox, el logotipo de Roblox y "Powering Imagination" son algunas de nuestras marcas registradas y no registradas en los Estados Unidos y otros países.