Teams erstellen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Erstellen von Teams lässt Sie Spieler in Gruppen sortieren, die um ein gemeinsames Ziel konkurrieren, wie z. B. die Erreichung eines bestimmten Punktes oder das Überschreiten einer Fertigkeitslinie vor anderen Feindeteams. Für einen First-Person-Shooter ist das Erstellen von Teams besonders wichtig, da es komplexe, koordinierte Spielstrategien jenseits der Fähigkeiten eines jeden einzelnen Spieler:inetabliert.

Dieser Abschnitt des Tutorials leitet die Benutzer anhand der Laser-Tag-Erlebnisse in Teams ein, wobei die Skript-Steuerung aufgeführt ist:

  • Verwenden Sie die Standardfunktionalität des Dienstes Teams, um Spieler entweder dem grünen oder dem rosa Team zuzuweisen.
  • Hilfe den Spielern, sich zwischen ihren Verbündeten und Feind-Teammitgliedern durch Erlebniskommunikatoren und -Indikatoren zu unterscheiden.
  • Aktivierung von verzeihlichem Gameplay, das den Spielern nicht die Blast ihres Teamsmitglieds zufügt.

Nachdem Sie diesen Abschnitt abgeschlossen haben, werden Sie darüber erfahren, wie die Skripte, die es den Spielern ermöglichen, in einer neutralen Lobby oder Team-Spawn-Zone zu spawnen oder zu respawnen, personalisierte Erste-Person-Kraftfeldvisualien und die Handhabung des Client-Status sowohl vom Server als auch vom Client.

Teamfarben zuweisen

Die Beispiel-Laser-Tag-Erfahrung verwendet den Teams -Dienst als Basis für die Erstellung von zwei Teams, da der Dienst integrierte Team-Sortierungsverhalten bietet, die weitgehend außerhalb der Box funktionieren. Zum Beispiel, ohne zusätzliche Skript-Effort, behandelt der Dienst Aktionen wie:

  • Spieler gleichmäßig in jedes Team sortieren und ausbalancieren.
  • Gruppierung von Spielern unter ihrem Team in der Bestenliste.
  • Benennen Sie Spieler im 3D-Raum in ihre entsprechende Teamfarbe.
  • Spieler zu spawnenden, die an bestimmten Spawn-Orten spawnen, an denen nur ihr Team Zugriffkann.

Aufgrund dieser Standardfunktionen aktiviert der Sammel die Teams -Dienst, dann verwendet zwei verschiedene Class.Team -Objekte mit verschiedenen Class.Team.Color -Eigenschaften, um

Es ist wichtig, die genaue BrickColor -Name für die Team.Color -Eigenschaft zu beachten,

startSyncingTeamColor Verweist auf Team.Color, damit es die richtige Farbe und das richtige Icon für den Spieler:inam unteren linken Eck ihres Bildschirms zuweisen kann.

Grünes Team
Pinkes Team

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

Team-Indikatoren anzeigen

Sobald ein Spieler in ein Team sortiert ist, muss er schnell sein, um zu entschlüsseln, zu welchem Team er gehört, und zwischen seinen Verbündeten und Feind-Teams zu unterscheiden. Diese Fähigkeit ist wichtig, da die Gameplay eines First-Person-Shooter-Erlebnisses erfordert, dass Spieler schnelle strategische Entscheidungen treffen, während sie in Kampfzonen sind, damit sie nicht ausgestrichen werden und die Runde verlieren.

Um Spieler für den Erfolg vorzubereiten, bietet die Laser-Tag-Erfahrung auf dem Bildschirm mehrere Team-Indikatoren sowohl auf dem Bildschirm als auch im Platz:

  • Spieler-Indikator – Benutzeroberfläche auf dem Bildschirm, die die Teamfarbe und das Symbol des Spieler:inanzeigt.
  • Team-Indikator – Benutzerdefinierte UI im Erlebnis, die die Teamfarbe des Spieler:inanzeigt.
  • Bestenlisten-Indikator – Standard-Team-UI, die Spieler unter ihrem Teamfarben gruppiert.
  • Namens-Tönung – Standard-Team-UI, die den Namen des Spieler:inüber seinem Kopf in die Teamfarbe taucht.
Screen-Indikatoren
Spieler-Indikator
Bestenlisten-Indikator
In-Experience-Indikatoren
Team-Indikator
Namens-Tönung

Sie müssen keine zusätzliche Arbeit für den Leaderboard Indicator oder Name Tint erledigen, um Teamfarben aus der vorherigen Sektion des Tutorials zuzuweisen, aber die benutzerdefinierten UI-Teamindikatoren erfordern mehr Programmierungsbemühungen, um sowohl die Indikatoren als auch die Feind-Indikatoren anzuzeigen, wenn sie hinter Wänden sind. Für eine vollständige Er

Freundliches Feuern deaktivieren

Während einige First-Person-Shooter-Erlebnisse Spieler bestrafen, die ihre eigenen Teamkollegen sprengen, erlaubt die Beispiel-Laser-Tag-Erfahrung mehr vergessliches Gameplay, indem sie freundliches initiierendeaktiviert. Diese Designentscheidung erlaubt jedem, nur seine Team-Punkte zu erhöhen, nicht aber den Spiel-Score durch Spiel-Unfälle zu subtrahieren.

Um zu verstehen, wie der Sammel diese Funktionalität implementiert, untersuchen Sie, wie ServerScriptService > LaserBlastHandler > processTaggedPlayers > 1> onPlayerTagged1> Verantwortliche Schaden an getagged-Spieler ver


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

Bevor es die Gesundheit reduziert, überprüft das Skript zuerst, ob der markierte Spieler auf demselben Team ist wie der Spieler, der die Explosion initiiert hat. Wenn sie auf demselben Team sind, ignoriert das Skript die Explosionsdaten vollständig.


local character = playerTagged.Character
local isFriendly = playerBlasted.Team == playerTagged.Team
-- Unerlaubtes freundliches initiieren
if isFriendly then
return
end

Wenn der gekennte Spieler jedoch auf dem feindlichen Team ist, nimmt der Spieler die entsprechende Menge Schaden, basierend auf dem eingeben. Darüber hinaus, wenn der Spieler genug Schaden erleidet, um getagged auszusteigen, gibt das Skript einen Punkt an das Team des Spielers zurück, der den Blaster ausgelöst hat. Weitere Informationen darüber, wie der Schnittstelle-Track-Punkte, finden Sie unter Adding Rounds später im 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

Wenn Sie die Erfahrung jetzt testen würden, würden alle Spieler zufällig in einer der Spawn-Zonen auf beiden Enden der Arena spawnen, unabhängig davon, zu welchem Team sie gehören, was bedeutet, dass jedes Team direkt neben einander spawnen würde.

Um dieses Problem zu beheben, lehrt der folgende Abschnitt des Tutorials Sie über die benutzerdefinierte Logik, die hinter der Beschränkung des Teamspawns an bestimmten Spawn-Standorten, dem Verarbeiten des Client-Status, wenn Spieler den Spawn-Bereich verlassen, und dem Respawn-Spieler zurück zu ihrem Spawn-Zone oder Lobby-Bereich, wenn ihre Gesundheit auf Null fällt.