Creazione di squadre

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Creare squadre ti consente di raggruppare i giocatori in gruppi che competono per completare un obiettivo comune, come ottenere il punteggio più alto o attraversare una linea d'arrivo prima di altri membri della squadra nemica. Per un giocatore in prima persona, la creazione di squadre è particolarmente importante poiché stabilisce strategie di gioco complesse e coordinate oltre il set di abilità di qualsiasi Giocatoreindividuale.

Usando l'esperienza del laser del campione di esempio come riferimento, questa sezione del tutorial ti insegna come organizzare i giocatori in team, tra cui la guida dello scripting su:

  • Usa la funzione predefinita del servizio Teams per assegnare i giocatori al team verde o rosa.
  • Aiuta i giocatori a differenziare tra i loro alleati e i membri del team nemico attraverso i indicatori di squadra sullo schermo e nell'esperienza.
  • Abilitare la giocabilità perdonante che non punisce i giocatori per aver fatto esplodere i loro compagni di squadra.

Dopo aver completato questa sezione, imparerai gli script che consentono ai giocatori di generare o respawnare in una lobby neutralizzata o zona di spawn del team, personalizzare le prime visuali del campo di forza in prima persona e gestire lo stato del client dal server e dal client.

Assegnare colori della squadra

L'esperienza del laser tag di esempio usa il servizio Teams come base per la creazione di due team poiché il servizio offre un comportamento di classificazione dei team incorporato che funziona in modo molto semplice fuori dalla scatola. Ad esempio, senza alcun sforzo di scripting aggiuntivo, il servizio gestisce azioni come:

  • Gestire e bilanciare i giocatori in modo uniforme in ciascuna team.
  • Raggruppamento dei giocatori sotto la loro squadra nella Classifica.
  • Colorare i nomi dei giocatori nello spazio 3D corrispondente al loro colore di squadra corrispondente.
  • Generazione di giocatori in luoghi di spawn distinti a cui solo il loro team può Accesso.

A causa di questa funzionalità predefinita, il campione abilita il servizio Teams , quindi utilizza due oggetti Team con proprietà Team.Color

È importante notare il nome esatto BrickColor per la proprietà Team.Color perché l'esperienza util

startSyncingTeamColor fa riferimento a Team.Color in modo che possa assegnare il colore e l'icona corretto per il team del Giocatorenell'angolo in basso a sinistra della loro schermata.

Squadra Verde
Squadra 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

Mostra indicatori team

Una volta che un giocatore è sortito in una team, deve essere in grado di decifrare rapidamente a quale squadra appartiene e distinguere tra i suoi alleati e i membri della squadra nemica. Questa capacità è importante poiché la giocabilità di un'esperienza di spar a prima persona richiede ai giocatori di prendere decisioni strategiche rapide mentre sono nelle zone di combattimento in modo che non vengano etichettati e perdano la partita.

Per impostare i giocatori per il Successo, l'esperienza di tag laser di esempio fornisce più indicatori di team sia sullo schermo che nello Spazio3D:

  • Indicatore giocatore – Personalizzato sullo schermo UI che mostra il colore e l'Iconadel team del Giocatore.
  • Indicatore di squadra – Personalizzato interfaccia utente in-experience che mostra il colore della squadra del Giocatore.
  • Leaderboard Indicator – UI del servizio della classifica che raggruppa i giocatori sotto il loro colore di squadra.
  • Tintura del nome del giocatore – Servizio in-experience UI che tintura il nome del Giocatoresopra la loro testa al loro colore di squadra.
Indicatori sullo schermo ]
Indicatore giocatore
Indicatore di classifica

Indicatori in-experience ]]>

Indicatore di squadra
Tintura del nome

Non è necessario eseguire alcun ulteriore lavoro per il Leaderboard Indicator o Name Tint all'interno dell'assegnazione dei colori del team dal precedente sezione del Tutoriale, ma i team di indicatori personalizzati richiedono più effort di programmazione per mostrare gli indicatori e occludere i colori nemici quando sono dietro le mura. Per una spiegazione completa degli script che controllano il comportamento UI personalizzato, nonché

Disabilita Fuoco Amichevole

Mentre alcune esperienze di sparatore in prima persona penalizzano i giocatori che fanno esplodere i loro compagni di squadra, l'esperienza di tag laser di esempio consente un gameplay più perdonatore disabilitando il Lanciareamico. Questa decisione di design consente a tutti di aumentare solo il punteggio della loro squadra, non sottrarlo dal gioco a causa di errori di gioco.

Per capire come il campione implementa questa funzionalità, esamina come ServerScriptService > LaserBlastHandler > processTaggedPlayers > 1> onPlayerTagged1> gestisce il danno ai Giocatorecontrassegnati.


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

Prima che diminuisca la salute, lo script verifica in primo luogo se il giocatore contrassegnato è sullo stesso team del giocatore che ha iniziato l'esplosione. Se sono sullo stesso team, lo script ignora i dati sull'esplosione completamente.


local character = playerTagged.Character
local isFriendly = playerBlasted.Team == playerTagged.Team
-- Disattiva il Lanciareamichevole
if isFriendly then
return
end

Tuttavia, se il giocatore contrassegnato è sulla squadra nemica, il giocatore subisce il danno appropriato in base al inserisci / scrividi blaster. Inoltre, se il giocatore subisce abbastanza danni per diventare contrassegnato, lo script ricompensa un punto al team del giocatore che ha iniziato l'esplosione. Per ulteriori informazioni su come le tracce dei punti aggiungono punti, vedi Aggiungere round più tardi nel Tutoriale.


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

Se testassi l'esperienza in questo momento, tutti i giocatori sarebbero casualmente spawnati nella zona di spawn in entrambi gli estremi dell'arena, indipendentemente dal team a cui appartengono, il che significa che ogni team sarebbe spawnato proprio accanto all'altro.

Per affrontare questo problema, la seguente sezione del tutorial ti insegna la logica personalizzata dietro la limitazione della generazione della squadra a determinati luoghi di spawn, gestire lo stato del client quando i giocatori lasciano la zona di spawn dopo aver selezionato il loro blaster e respawnare i giocatori nella loro zona di spawn o area lobby quando la loro salute raggiunge zero.