Tworzenie drużyn

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Tworzenie drużyn pozwala sortować graczy w grupy, które rywalizują w dążeniu do wspólnego celu, takiego jak zdobycie największej liczby punktów lub przekroczenie linii mety przed innymi członkami drużyny wroga. W przypadku strzelanki z perspektywy pierwszej osoby tworzenie drużyn jest szczególnie istotne, ponieważ ustanawia złożone, skoordynowane strategie rozgrywki, które wykraczają poza umiejętności jakiegokolwiek pojedynczego gracza.

Korzystając z przykładowego doświadczenia w laser tagu jako odniesienia, ta część samouczka nauczy Cię, jak sortować graczy w drużyny, w tym wskazówki dotyczące skryptowania na temat:

  • Wykorzystywania domyślnej funkcjonalności usługi Teams do przypisywania graczy do drużyny zielonej lub różowej.
  • Pomagania graczom w odróżnianiu sojuszników od członków drużyny wroga poprzez wskaźniki drużynowe na ekranie i w samym doświadczeniu.
  • Umożliwienia pobłażliwej rozgrywki, która nie karze graczy za ostrzeliwanie swoich sojuszników.

Po ukończeniu tej sekcji dowiesz się o skryptach, które pozwalają graczom na pojawienie się lub wznowienie w neutralnym lobby lub strefie odrodzenia drużyny, personalizację wizualizacji pola siłowego w perspektywie pierwszej osoby oraz zarządzanie stanem klienta zarówno z serwera, jak i klienta.

Przypisz kolory drużyn

Przykładowe doświadczenie w laser tagu wykorzystuje usługę Teams jako podstawę tworzenia dwóch drużyn, ponieważ usługa ta oferuje wbudowane zachowanie sortującego drużyny, które działa ogólnie od razu po wyjęciu z pudełka. Na przykład, bez dodatkowego wysiłku skryptowego, usługa obsługuje działania takie jak:

  • Równomierne sortowanie i balansowanie graczy w każdej drużynie.
  • Grupowanie graczy pod ich drużyną na tablicy wyników.
  • Zabarwienie nazw graczy w przestrzeni 3D według odpowiadającego koloru drużyny.
  • Pojawianie się graczy w odrębnych lokalizacjach spawn, do których dostęp ma tylko ich drużyna.

Dzięki tej domyślnej funkcjonalności, próbka uruchamia usługę Teams, a następnie używa dwóch odrębnych obiektów Team z różnymi wartościami właściwości Team.Color, aby reprezentować każdą drużynę: miętową dla drużyny, która gromadzi się po jednej stronie mapy, oraz różową dla drużyny, która gromadzi się po przeciwnej stronie mapy. Te konkretne kolory są przydatne, ponieważ są komplementarne, co oznacza, że dobrze kontrastują ze sobą, a także pozwalają graczom łatwo skanować otoczenie i orientować się w budynku oraz wobec innych graczy.

Ważne jest, aby zwrócić uwagę na dokładną nazwę BrickColor dla właściwości Team.Color, ponieważ doświadczenie używa tej nazwy w wielu skryptach w doświadczeniu, aby śledzić graczy podczas sortowania ich w drużyny, zwiększać punkty, gdy gracze eliminują wrogich graczy podczas rundy, oraz zaktualizować elementy UI. Na przykład, gdy runda się zaczyna, ReplicatedStorageHUDGuiSetup wymaga startSyncingTeamColor i startSyncingTeamPoints, które obie odnoszą się do Team.Color, aby wykonywać unikalne akcje dla każdej drużyny.

startSyncingTeamColor odnosi się do Team.Color, aby przypisać właściwy kolor i ikonę dla wskaźnika drużyny gracza w dolnym lewym rogu ich ekranu.

Zielona Drużyna
Różowa Drużyna

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

Wyświetlajniki drużyn

Gdy gracz zostanie przypisany do drużyny, musi szybko zrozumieć, do jakiej drużyny należy oraz odróżnić sojuszników od członków drużyny wroga. Ta umiejętność jest ważna, ponieważ rozgrywka w doświadczeniu strzelanki z perspektywy pierwszej osoby wymaga, aby gracze podejmowali szybkie decyzje strategiczne w strefach walki, aby nie zostać wyeliminowanym i nie stracić rundy.

Aby zapewnić graczom sukces, przykładowe doświadczenie w laser tagu oferuje wiele wskaźników drużynowych zarówno na ekranie, jak i w przestrzeni 3D:

  • Wskaźnik gracza – Niestandardowe UI na ekranie, które wyświetla kolor drużyny i ikonę gracza.
  • Wskaźnik drużyny – Niestandardowe UI w doświadczeniu, które wyświetla kolor drużyny gracza.
  • Wskaźnik tablicy wyników – Domyślne UI usługi Drużyn, które grupuje graczy pod ich kolorem drużyny.
  • Zabarwienie imienia – Domyślne UI usługi Drużyn, które zabarwia imię gracza nad jego głową na kolor drużyny.
Wskaźniki na ekranie
Wskaźnik gracza
Wskaźnik tablicy wyników
Wskaźniki w doświadczeniu
Wskaźnik drużyny
Zabarwienie imienia

Nie musisz robić dodatkowej pracy dla Wskaźnika tablicy wyników ani Zabarwienia imienia poza przypisaniem kolorów drużyn z poprzedniej sekcji samouczka, ale niestandardowe wskaźniki UI drużyn wymagają więcej wysiłku programistycznego, aby zarówno wyświetlić wskaźniki, jak i ocenić wskaźniki drużyny wroga, gdy są one za ścianami. Aby uzyskać pełne wyjaśnienie skryptów sterujących zachowaniem niestandardowego UI, jak również jak zaimplementować każdy element UI, zobacz Wskaźnik gracza i Wskaźnik drużyny w programie nauczania UI.

Wyłącz ogień przyjazny

Podczas gdy niektóre doświadczenia w strzelankach z perspektywy pierwszej osoby karają graczy za ostrzeliwanie swoich sojuszników, przykładowe doświadczenie w laser tagu pozwala na bardziej pobłażliwą rozgrywkę poprzez wyłączenie ognia przyjaznego. Ta decyzja projektowa pozwala każdemu jedynie zwiększać swój wynik drużynowy, a nie odejmować od niego z powodu wypadków w rozgrywce.

Aby zrozumieć, jak próbka implementuje tę funkcjonalność, sprawdź, jak ServerScriptServiceLaserBlastHandlerprocessTaggedPlayersonPlayerTagged radzi sobie z zadawaniem obrażeń oznaczonym graczom. Gdy serwer wykryje kolizję między błyskiem gracza a innym graczem, wywołuje funkcję onPlayerTagged, aby zrozumieć, który gracz wystrzelił błysk, który gracz został trafiony przez błysk i ile obrażeń powinno zostać odjętych od zdrowia gracza zgodnie z rodzajem strzelby.


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

Przed zmniejszeniem zdrowia skrypt najpierw weryfikuje, czy oznaczony gracz jest w tej samej drużynie, co gracz, który inicjował wystrzał. Jeśli są w tej samej drużynie, skrypt całkowicie ignoruje dane o błysku.


local character = playerTagged.Character
local isFriendly = playerBlasted.Team == playerTagged.Team
-- Zabraniamy ognia przyjaznego
if isFriendly then
return
end

Jednak jeśli oznaczony gracz jest w drużynie wroga, gracz otrzymuje odpowiednią ilość obrażeń zgodnie z rodzajem strzelby. Dodatkowo, jeśli gracz otrzyma wystarczająco dużo obrażeń, aby zostać oznaczonym, skrypt nagradza punkt dla drużyny gracza, który zainicjował wystrzał. Aby uzyskać więcej informacji na temat tego, jak próbka śledzi punkty, zobacz Dodaj rundy później w samouczku.


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

Jeśli chciałbyś przetestować doświadczenie już teraz, wszyscy gracze losowo pojawią się w strefie odrodzenia na przeciwnych końcach areny, bez względu na to, do jakiej drużyny należą, co oznacza, że każda drużyna będzie pojawiać się tuż obok siebie.

Aby rozwiązać ten problem, następna sekcja samouczka nauczy Cię o niestandardowej logice ograniczania odradzania drużyn do określonych lokalizacji odrodzenia, zarządzania stanem klienta, gdy gracze opuszczają obszar odrodzenia po wybraniu swojego blastera oraz ponownym odradzaniu graczy do ich strefy odrodzenia lub obszaru lobby, gdy ich zdrowie osiągnie zero.

©2026 Roblox Corporation. Nazwa Roblox, logo Roblox oraz hasło „Powering Imagination” należą do naszych zarejestrowanych i niezarejestrowanych znaków towarowych na terenie Stanów Zjednoczonych oraz w innych krajach.