tworzenie zespołów pozwala sortować graczy w grupy, które konkurują, aby ukończyć wspólny cel, takich jak zdobywanie najwięcej punktów lub przejście linii mety przed innymi członkami zespołu. Dla strzelającego w pierwszej osoby, tworzenie zespołów jest szczególnie ważne, ponieważ ustanawia złożone, skoordynowane strategie gry poza zestawem umiejętności każdego pojedynczego
Używając do referencji sample laser tag experience, ta sekcja samoucznia uczy cię, jak sortować graczy w zespoły, w tym kierunki skryptów na:
- Używając funkcji domyślnej Teams udzielać graczom zielony lub różowy zespół.
- Pomagaj graczom wyróżnić się między sobą a członkami zespołu wrogiego poprzez wskaźniki na ekranie i w doświadczeniu.
- Włączanie do gry przebaczenia, która nie kara graczy za rozwaliwanie ich zespołu.
Po zakończeniu tej sekcji dowiesz się o skryptach, które pozwalają graczom na tworzenie lub odtwarzanie do neutralnej lobby lub strefy tworzenia zespołu, personalizowanie wizualnych pola sił pierwszej osoby i obsługiwanie stanu klienta zarówno z serwera, jak i klienta.
Zakreśl Kolory Zespołu
Doświadczenie laserowe samplera używa usługi Teams jako podstawy do tworzenia dwóch zespołów, ponieważ usługa oferuje zintegrowany zesortowanie zachowań, które powszechnie działa poza skrzynką. Na przykład, bez dodatkowego wysiłku skryptowego usługa obsługuje takie działania jak:
- Sortowanie i równoważenie graczy nawet równomiętnie w każdej drużynie.
- Gromadzenie graczy pod swoją drużyną na ranking.
- Kolorowanie imion graczy w przestrzeni 3D odpowiadającego ich koloru zespołu.
- Generowanie graczy w różnych lokalizacjach, do których tylko ich zespół może uzyskać dostęp.
Ze względu na tę domyślną funkcjonalność wzór umożliwia Teams usługę, a następnie używa dwóch różnych obiektów Class.
Ważne jest, aby zauważyć dokładną nazwę BrickColor dla właściwości Team.Color, pon
startSyncingTeamColor odnosi się do referencji Team.Color, aby może przypisać poprawny kolor i ikona dla wskaźnika zespołu gracza w lewym dolnym rogu ekranu.
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świetuj wskaźniki zespołu
Gdy gracz zostanie przypisany do zespołu, musi być w stanie szybko zdekryptować, do którego zespołu należy, i rozróżnić między członkami swojego zespołu a członkami wroga. Ta zdolność jest ważna, ponieważ zdolność do szybkiego podejmowania strategicznych decyzji w grze w pierwszej osobie wymaga, aby gracze nie byli oznaczeni i nie tracili rundy.
Aby ustawić graczy na powodzenie, doświadczenie laserowego tagu próbkowego zapewnia wiele wskaźników zespołu zarówno na ekranie, jak i w przestrzeni 3D:
- Wskaźnik gracza – Dostosowany interfejs użytkownika na ekranie, który wyświetla kolor i ikonadrużyny gracza.
- Wskaźnik zespołu – Dostosowany interfejs użytkownika w grze, który wyświetla kolor zespołu gracza.
- Leaderboard Indicator – Usługa na ekranie interfejsu użytkownika, która grupuje graczy pod ich barwą zespołu.
- Kolor Name Tint – Usługa koloru nazwy w grze w wersji bez doświadczenia, która koloruje nazwę gracza nad ich głową do ich koloru zespołu.
Nie musisz robić żadnej dodatkowej pracy dla wskaźnika wyników lub koloru imienia poza przydzielaniem kolorów zespołu z poprzedniego sezonu z sekcji Dane w tutorialu, ale wskaźniki interfejsu użytkownika personalizowane wymagają więcej pracy programistycznej, aby wyświetlić wyn
Wyłącz Ognistą Przyjazną
Podczas gdy niektóre doświadczenia strzelców w pierwszej osobie karają graczy, którzy rozwali swych własnych członków zespołu, samplaserowa etykieta umożliwia więcej wybaczającą gry, wyłączając przyjazny ogień. Ta decyzja o projektowaniu pozwala tylko na zwiększenie wyniku zespołu, nie odejmując go od niego ze względu na wypadki w grze.
Aby zrozumieć, jak wbudowano tę funkcjonalność w przykładzie, zbadaj, jak LaserBlastHandler > processTaggedPlayers > naPlayerTagged > 2> naPlayerTagged2> > 5> <
local function onPlayerTagged(playerBlasted: Player, playerTagged: Player, damageAmount: number)
Zanim zmniejsza zdrowie, pierwsze weryfikuje, czy oznaczony gracz jest na tej samej drużynie co gracz, który inicjował eksplozję. Jeśli są na tej samej drużynie, to skrypt ignoruje wszystkie dane eksplozji.
local character = playerTagged.Characterlocal isFriendly = playerBlasted.Team == playerTagged.Team-- Niedozwolony przyjazny ogieńif isFriendly thenreturnend
Jeśli jednak oznaczony gracz jest na zespołach wrogich, gracz otrzymuje odpowiednią ilość obrażeń w zależności od wpisywaćblastera. Ponadto, jeśli gracz otrzymuje wystarczająco dużo obrażeń, aby zostać oznaczonym, skrypty nagradzają punkt do zespołu gracza, który inicjował eksplozję. Dla więcej informacji o tym, jak ś
local humanoid = character and character:FindFirstChild("Humanoid")if humanoid and humanoid.Health > 0 thenlocal damage = math.min(damageAmount, humanoid.Health)humanoid:TakeDamage(damage)if humanoid.Health <= 0 thenScoring.incrementScore(playerBlasted, 1)endendendreturn onPlayerTagged
Jeśli przetestujesz doświadczenie w tej chwili, wszystkie gracze pojawiałyby się losowo w jednej z tureckich stref spawneń, niezależnie od tego, do którego zespołu należą, co oznacza, że każdy zespół pojawi się właśnie po drugiej stronie.
Aby rozwiązać ten problem, następna sekcja samouczka uczy cię o logice niestandardowej za ograniczaniem tworzenia zespołu do pewnych lokalizacji tworzenia, obsługiwaniu stanu klienta, gdy gracze opuszczają obszar tworzenia po wyboru ich blastera i odtwarzaniu graczy w obszarze tworzenia lub obszarze lobby, gdy ich zdrowie osiągnie zero.