Teams erstellen

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

Teams erstellen ermöglicht es Ihnen, Spieler in Gruppen zu sortieren, die gegeneinander antreten, um ein gemeinsames Ziel zu erreichen, wie zum Beispiel die meisten Punkte zu erzielen oder die Ziellinie vor anderen Mitgliedern des gegnerischen Teams zu überqueren. Für einen Ego-Shooter ist die Bildung von Teams besonders wichtig, da sie komplexe, koordinierte Spielstrategien etabliert, die über die Fähigkeiten eines einzelnen Spielers hinausgehen.

Anhand des Beispiel-Laser-Tag-Spiels wird in diesem Abschnitt des Tutorials erklärt, wie Sie Spieler in Teams sortieren, einschließlich Skriptanleitungen zu:

  • Verwendung der Standardfunktionalität des Teams-Dienstes, um Spieler entweder dem grünen oder dem rosa Team zuzuweisen.
  • Unterstützung der Spieler, um zwischen ihren Verbündeten und den Mitgliedern des gegnerischen Teams durch Bildschirm- und In-Game-Teamindikatoren zu unterscheiden.
  • Ermöglichung eines nachsichtigen Gameplays, das Spieler nicht bestraft, wenn sie ihre Teamkollegen treffen.

Nachdem Sie diesen Abschnitt abgeschlossen haben, erfahren Sie mehr über die Skripte, die es Spielern ermöglichen, in eine neutrale Lobby oder einen Team-Spawn-Bereich zu spawnen oder wiederzubeleben, die visuellen Effekte des Kraftfelds aus der Ego-Perspektive anzupassen und den Client-Zustand sowohl vom Server als auch vom Client aus zu verwalten.

Teamfarben zuweisen

Das Beispiel-Laser-Tag-Spiel verwendet den Teams-Dienst als Grundlage zur Erstellung von zwei Teams, da der Dienst eine integrierte Team-Sortierfunktionalität bietet, die im Allgemeinen sofort funktioniert. Zum Beispiel kümmert sich der Dienst ohne zusätzlichen Skripteinsatz um Aktionen wie:

  • Spieler gleichmäßig in jedes Team zu sortieren und auszubalancieren.
  • Spieler unter ihrem Team auf der Bestenliste zu gruppieren.
  • Spielernamen im 3D-Raum in die entsprechende Teamfarbe zu färben.
  • Spieler an unterschiedlichen Spawn-Standorten zu spawnen, auf die nur ihr Team zugreifen kann.

Aufgrund dieser Standardfunktionalität aktiviert das Beispiel den Teams-Dienst und verwendet dann zwei verschiedene Team-Objekte mit unterschiedlichen Werten für die Team.Color-Eigenschaft, um jedes Team darzustellen: mint für das Team, das sich auf einer Seite der Karte versammelt, und carnation pink für das Team, das sich auf der gegenüberliegenden Seite der Karte versammelt. Diese spezifischen Farben sind nützlich, da sie komplementär sind, was bedeutet, dass sie sich gut voneinander abheben, und sie ermöglichen es den Spielern, ihre Umgebung leicht zu scannen und sich innerhalb des Gebäudes und zu anderen Spielern zu orientieren.

Es ist wichtig, den genauen BrickColor-Namen für die Team.Color-Eigenschaft zu beachten, da das Spiel diesen Namen in vielen Skripten verwendet, um die Spieler zu verfolgen, während sie in Teams sortiert werden, Punkte zu erhöhen, wenn Spieler gegnerische Spieler während einer Runde ausschalten, und benutzerdefinierte UI-Elemente zu aktualisieren. Zum Beispiel, wenn eine Runde beginnt, benötigt ReplicatedStorageHUDGuiSetup startSyncingTeamColor und startSyncingTeamPoints, die beide auf Team.Color verweisen, um einzigartige Aktionen für jedes Team auszuführen.

startSyncingTeamColor verweist auf Team.Color, damit es die richtige Farbe und das richtige Symbol für den Teamindikator des Spielers in der unteren linken Ecke ihres Bildschirms zuweisen kann.

Grünes Team
Rosa 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

Teamindikatoren anzeigen

Sobald ein Spieler in ein Team sortiert ist, muss er schnell erkennen können, zu welchem Team er gehört, und zwischen seinen Verbündeten und den Mitgliedern des gegnerischen Teams unterscheiden. Diese Fähigkeit ist wichtig, da das Gameplay eines Ego-Shooter-Spiels von den Spielern erfordert, schnelle strategische Entscheidungen zu treffen, während sie sich in Kampfzonen befinden, damit sie nicht ausgeschaltet werden und die Runde verlieren.

Um die Spieler auf den Erfolg vorzubereiten, bietet das Beispiel-Laser-Tag-Spiel mehrere Teamindikatoren sowohl auf dem Bildschirm als auch im 3D-Raum:

  • Spielerindikator – Benutzerdefinierte UI auf dem Bildschirm, die die Teamfarbe und das Symbol des Spielers anzeigt.
  • Teamindikator – Benutzerdefinierte In-Game-UI, die die Teamfarbe des Spielers anzeigt.
  • Leaderboard-Indikator – Standard-Teams-Dienst UI auf dem Bildschirm, die Spieler unter ihrer Teamfarbe gruppiert.
  • Namensfärbung – Standard-Teams-Dienst In-Game-UI, die den Namen des Spielers über seinem Kopf in die Teamfarbe färbt.
Bildschirmindikatoren
Spielerindikator
Leaderboard-Indikator
In-Game-Indikatoren
Teamindikator
Namensfärbung

Für den Leaderboard-Indikator oder die Namensfärbung müssen Sie außerhalb der Zuweisung der Teamfarben aus dem vorherigen Abschnitt des Tutorials keine zusätzlichen Arbeiten durchführen, aber die benutzerdefinierten UI-Teamindikatoren erfordern mehr Programmieraufwand, um sowohl die Indikatoren anzuzeigen als auch gegnerische Indikatoren zu verdecken, wenn sie hinter Wänden stehen. Für eine vollständige Erklärung der Skripte, die das Verhalten der benutzerdefinierten UI steuern, sowie wie man jedes UI-Element selbst implementiert, siehe Spielerindikator und Teamindikator aus dem UI-Curriculum.

Freundliches Feuer deaktivieren

Während einige Ego-Shooter-Spiele Spieler bestrafen, die ihre eigenen Teamkollegen treffen, ermöglicht das Beispiel-Laser-Tag-Spiel ein nachsichtigeres Gameplay, indem freundliches Feuer deaktiviert wird. Diese Designentscheidung ermöglicht es jedem, nur die Punktzahl seines Teams zu erhöhen, ohne sie aufgrund von Gameplay-Unfällen zu verringern.

Um zu verstehen, wie das Beispiel diese Funktionalität implementiert, untersuchen Sie, wie ServerScriptServiceLaserBlastHandlerprocessTaggedPlayersonPlayerTagged mit dem Umgang von Schaden an getaggten Spielern umgeht. Wenn der Server eine Kollision zwischen dem Schuss eines Spielers und einem anderen Spieler erkennt, wird die Funktion onPlayerTagged aufgerufen, um zu verstehen, welcher Spieler den Schuss abgegeben hat, welcher Spieler vom Schuss getroffen wurde und wie viel Schaden von der Gesundheit des Spielers gemäß dem Blastertyp entfernt werden soll.

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

Bevor die Gesundheit verringert wird, überprüft das Skript zunächst, ob der getaggte Spieler im selben Team ist wie der Spieler, der den Schuss abgegeben hat. Wenn sie im selben Team sind, ignoriert das Skript die Schussdaten vollständig.

local character = playerTagged.Character
local isFriendly = playerBlasted.Team == playerTagged.Team
-- Freundliches Feuer deaktivieren
if isFriendly then
return
end

Wenn der getaggte Spieler jedoch im gegnerischen Team ist, erleidet der Spieler den entsprechenden Schaden gemäß dem Blastertyp. Darüber hinaus, wenn der Spieler genug Schaden erleidet, um getaggt zu werden, belohnt das Skript das Team des Spielers, der den Schuss abgegeben hat, mit einem Punkt. Für weitere Informationen darüber, wie das Beispiel Punkte verfolgt, siehe Runden hinzufügen 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 das Spiel jetzt testen würden, würden alle Spieler zufällig an einem der Spawn-Zonen an den gegenüberliegenden Enden der Arena erscheinen, unabhängig davon, zu welchem Team sie gehören, was bedeutet, dass jedes Team direkt nebeneinander spawnen würde.

Um dieses Problem zu beheben, lehrt Sie der folgende Abschnitt des Tutorials die benutzerdefinierte Logik hinter der Einschränkung des Teamspawns auf bestimmte Spawn-Standorte, den Umgang mit dem Client-Zustand, während Spieler den Spawnbereich verlassen, nachdem sie ihren Blaster ausgewählt haben, und das Wiederbeleben von Spielern zurück zu ihrem Spawnbereich oder Lobbybereich, wenn ihre Gesundheit null erreicht.

©2026 Roblox Corporation. Roblox, das Roblox-Logo und "Powering Imagination" gehören zu unseren eingetragenen und nicht eingetragenen Markenzeichen in den USA und anderen Ländern.