Takımlar oluşturma , oyuncuları ortak bir hedefe ulaşmak için yarışan gruplara ayırır, takımların en çok puan topladığı veya diğer düşman takımlarının önünde sona ulaşma stratejilerini karşılaştırdığı için özellikle önemlidir. Bir ilk kişi nişancı için, takımlar oluşturma özell
Bu nedenle, bu öğreticiyi kullanarak örnek laser etiketi deneyimi referans olarak, bu bölüm öğreticiyi kullanarak oyuncuları takımlara ayırmanın nasıl öğretileceğini öğretir:
- Class.Teams hizmetinin varsayılan işlevlerini kullanarak oyuncuları yeşil veya pembe takıma atar.
- Oyuncuların müttefikleriyle düşman takım üyeleri arasında ekran ve deneyim içindeki takım göstergeleri aracılığıyla farklılık yaratmasına yardımcı olmak.
- Takım arkadaşlarını patlatmak için para cezalarını kullanmayan affedici oyun etkinleştirme.
Bu bölümü tamamladıktan sonra, oyuncuların herhangi bir nötr lobi veya takım oluşturma bölgesine yeniden doğmasına izin veren kodları öğreneceksiniz, ilk kişi güç alanı görüntülerini özelleştireceksiniz ve sunucudan veya istemciden iki ayrı olarak kullanıcı durumunu ele alacaksınız.
Takım Renglerini Atayın
Örnek laser etiketi deneyimi iki takım oluşturmak için Teams hizmetini temel olarak kullanır çünkü hizmet, içe aktarma davranışını genişletir ve kutu dışı çalışır. Örneğin, ekstra kodlama çabası gerektirmeyen durumlarda, hizmet aşağıdaki gibi eylemleri işleyebilir:
- Oyuncuları her takıma eşit olarak sıralayın ve dengeleyin.
- Lider liderlik tablosutakımlarının altındaki oyuncuları gruplandırır.
- Oyuncuları 3D alanında eşdeğer takım rengine boya.
- Takımların erişebileceği farklı oluşturma yerlerine oluşturulan oyuncular.
Bu varsayılan işlevselliği nedeniyle, örnek Teams hizmetini etkinleştirir ve ardından Team özellik değerler
Arayüz, deneyimin tüm kodlarının çoğu yerinde kullanıcıları takip etmek için deneyimin kull
startSyncingTeamColor referansları Team.Color takılabilirsiniz, böylece oyuncunun takım göstergesinin alt kısmındaki ekran sol kısmında doğru rengi ve ikonu atayabilirsiniz.
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
Takım Göstergelerini Göster
Bir oyuncu bir takıma düzenlendiğinde, takımlarına ait olduğunu hızlı bir şekilde anlayabilmeli ve müttefikleriyle düşman takım üyeleri arasında farklılık yaratabilmelidir. Bu yetenek önemlidir, çünkü birinci kişisel bir nişancı deneyiminin oynanışı, oyuncuların savaş bölgelerinde etiketlenmed
Oyuncuları başarılı olmak için ayarlamak için, özel laser etiketi deneyimi, hem ekranda hem de 3D alanında birkaç takım göstergesi sağlar:
- Oyuncu Göstergesi – oyuncutakım rengini ve simgegösteren özel bir ekran UI'si.
- Takım Göstergesi – oyuncutakım rengini gösteren özelleştirilmiş bir deneyim UI'si.
- Leaderboard Indicator – Takımların altındaki oyuncuları takım renginde gruplandıran varsayılan takımlar servisi.
- İsim Tintesi – oyuncuismini kafasındaki takım rengine boya.
Önceki bölümden takım rengi atamak dışında Liderlik Göstergesi ve İsim Renkleri için ekstra çalışma yapmanıza gerek yok, ancak özel UI takım göstergeleri, göstergeleri gösteren ve kapatan düşman göstergelerini gizleyen gibi işlevleri
Müttefik Ateşi Kapat
Bazı ilk kişi nişancı deneyimleri, kendi takım arkadaşlarını patlatan oyuncuları cezalandırırken, örnek lazer etiketi deneyimi, dostluk ateşini devre dışı bırakarak daha hoş bir oynama imkanı sağlar. Bu tasarım kararı, oyun kaynağından kaybetmeyi önlemek için herkesin sadece takım puanını artırmasına izin verir, oyun kazasından dolayı kaybetmey
Örnekün bu işlevi nasıl gerçekleştirdiğini anlamak için, ServerScriptService > LaserBlastHandler > processTaggedPlayers > 2> onPlayerTagged2> oyuncu
local function onPlayerTagged(playerBlasted: Player, playerTagged: Player, damageAmount: number)
Sağlığı azaltmadan önce, etiketli oyuncu aynı takımda olduğunu doğrular. Eğer aynı takımda olduğunu doğrularsa, etiketli oyuncu patlayıcıyı tamamen görmezden gelir.
local character = playerTagged.Characterlocal isFriendly = playerBlasted.Team == playerTagged.Team-- Müttefik ateşi yasaklaif isFriendly thenreturnend
Ancak, etiketli oyuncu öldürücü takımda ise, oyuncu blaster yazgöre uygun miktarda hasar alır. Ayrıca, oyuncu etiketlenmiş çıktığı takım için yeterli hasarı alırsa, kullanıcının başlattığı patlamadan sonra takımın ödülü bir puan olarak görü
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
Şimdi deneyimi test etseniz, tüm oyuncular anahtar bölgelerdeki herhangi bir oluşturma bölgesinde rastgele olarak doğacak ve her takım birbirinden bağımsız olarak yan yana yerleşecek, yani her takım birbirinden yan yana yerleşecek.
Bu sorunu ele almak için, öğreticiyi bu kadar sınırlı takım oluşturma noktalarına özel kodlama hakkında bilgilendirir, klien durumunu yönetirken blaster'ınızın sağlığını sıfırladığında oluşturma bölgesine veya oyun alanına yeniden oluşturur ve sağlığınızın sıfır olduğunda oluşturma bölgesine veya lobi alanı