Takımları Oluştur

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Takımları oluşturmak, oyuncuları ortak bir amaca ulaşmak için yarışan gruplara sıralamanızı sağlar; bu amaç en yüksek puanı kazanmak veya diğer düşman takım üyelerinden önce bir bitiş çizgisini geçmek olabilir. Birinci şahıs nişancı oyunları için takımları oluşturmak özellikle önemlidir çünkü bu, herhangi bir bireysel oyuncunun beceri setinin ötesinde karmaşık, koordineli oyun stratejilerini belirler.

örnek lazer tag deneyimini referans alarak, bu tutorial bölümünde oyuncuları takımlara ayırmayı öğreneceksiniz. Scripting rehberliği de dahil olmak üzere:

  • Teams hizmetinin varsayılan işlevselliğini kullanarak oyuncuları yeşil veya pembe takımına atama.
  • Oyuncuların müttefikleri ve düşman takım üyeleri arasındaki farklılıkları ayırt etmelerine yardımcı olmak için ekranda ve deneyim boyunca takım göstergeleri sağlama.
  • Oyuncuları takım arkadaşlarını vurarak ceza vermeyen hoşgörülü bir oyun deneyimi sağlama.

Bu bölümü tamamladıktan sonra, oyuncuların nötr bir lobide veya takım doğma bölgesinde doğmasını veya yeniden doğmasını sağlamak için kullanılan scriptler hakkında bilgi edinecek, birinci şahıs güç alanı görsellerini özelleştirecek ve hem sunucudan hem de istemciden istemci durumunu yöneteceksiniz.

Takım renklerini atama

Örnek lazer tag deneyimi, takımları oluşturmak için iki takım oluşturmanın temeli olarak Teams hizmetini kullanıyor çünkü bu hizmet, kutunun dışında geniş bir şekilde çalışan yerleşik takım sıralama davranışı sunuyor. Örneğin, herhangi bir ek scripting çabası olmadan, hizmet aşağıdaki gibi eylemleri işler:

  • Oyuncuları her takıma eşit bir şekilde sıralama ve dengeleme.
  • Oyuncuları liderlik tablosunda kendi takımları altında gruplama.
  • Oyuncu isimlerini 3D ortamda karşılık gelen takım renginde tonlama.
  • Oyuncuları yalnızca kendi takımlarının erişebileceği belirli doğma yerlerine doğma.

Bu varsayılan işlevsellik nedeniyle, örnek Teams hizmetini etkinleştirir, ardından haritanın bir tarafında toplanan takım için mentol ve haritanın karşı tarafında toplanan takım için karanfil pembe farklı Team nesneleri ile farklı Team.Color özellik değerleri kullanır. Bu özel renkler, tamamlayıcı oldukları için yararlıdır, bu da birbirleriyle iyi bir şekilde zıt oldukları anlamına gelir ve oyuncuların etraflarını kolayca taramalarını ve iç mekan içinde ve diğer oyunculara yönelmelerini sağlar.

Team.Color özelliği için tam BrickColor adını not etmek önemlidir çünkü deneyim, oyuncuları takımlara sıralarken, oyuncular düşman oyuncuları etiketlediğinde puanları artırırken ve özel UI bileşenlerini güncellerken bu adı birçok scriptte kullanır. Örneğin, bir tur başladığında, ReplicatedStorageHUDGuiSetup startSyncingTeamColor ve startSyncingTeamPoints gerektirir; her ikisi de her takım için özel eylemler gerçekleştirmek üzere Team.Color'u referans alır.

startSyncingTeamColor, oyuncunun ekranının sol alt köşesindeki takım göstergesi için doğru renk ve simgeyi atamak üzere Team.Color'u referans alır.

Yeşil Takım
Pembe Takım

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örüntüleme

Bir oyuncu bir takıma sıralandığında, hangi takıma ait olduğunu hızlı bir şekilde anlaması ve müttefikleri ile düşman takım üyeleri arasında farklılıkları ayırt edebilmesi gerekir. Bu yetenek, birinci şahıs nişancı deneyiminde oyuncuların savaş alanında etiketlenme riskini azaltmadan hızlı stratejik kararlar almasını sağlamak için önemlidir.

Başarılı olmaları için, örnek lazer tag deneyimi hem ekranda hem de 3D alanında birden fazla takım göstergesi sağlar:

  • Oyuncu Göstergesi – Oyuncunun takım rengini ve simgesini görüntüleyen özel ekran UI'si.
  • Takım Göstergesi – Oyuncunun takım rengini görüntüleyen özel deneyim UI'si.
  • Liderlik Tablosu Göstergesi – Oyuncuları kendi takım rengi altında gruplandıran varsayılan Takımlar hizmeti ekran UI'si.
  • İsim Tonu – Oyuncunun başının üzerinde takım rengine göre tonu ayarlayan varsayılan Takımlar hizmeti deneyim UI'si.
Ekrandaki Göstergeler
Oyuncu Göstergesi
Liderlik Tablosu Göstergesi
Deneyim içindeki Göstergeler
Takım Göstergesi
İsim Tonu

Liderlik Tablosu Göstergesi veya İsim Tonu için önceki bölümde takım renklerini atamadıkça herhangi bir ek çalışma yapmanıza gerek yok; ancak özel UI takım göstergeleri, göstergeleri görüntülemek ve düşman göstergelerini duvarların arkasında gizlemek için daha fazla programlama çabası gerektirir. Özel UI davranışlarını kontrol eden scriptler hakkında daha fazla bilgi ve her bir UI öğesinin kendisini nasıl uygulayacağınızı öğrenmek için, UI Müfredatından Oyuncu Göstergesi ve Takım Göstergesi bölümüne bakın.

Dost ateşini devre dışı bırakma

Bazı birinci şahıs nişancı deneyimleri, kendi takım arkadaşlarını vuran oyuncuları ceza verirken, örnek lazer tag deneyimi daha hoşgörülü bir oyun deneyimi sağlar ve dost ateşini devre dışı bırakır. Bu tasarım kararı, herkesin sadece takım puanını artırmasını sağlar, oyun kazaları nedeniyle puan azaltmaz.

Örnek bu işlevselliği nasıl uyguladığını anlamak için, ServerScriptServiceLaserBlastHandlerprocessTaggedPlayersonPlayerTagged fonksiyonunun etiketlenen oyunculara zarar verme işlemini nasıl gerçekleştirdiğini inceleyin. Sunucu, bir oyuncunun patlaması ile diğer bir oyuncu arasında bir çarpışma tespit ettiğinde, hangi oyuncunun patlamayı ateşlediğini, hangi oyuncunun patlamadan etkilendiğini ve hangi miktarda hasar alması gerektiğini anlamak için onPlayerTagged fonksiyonunu çağırır.


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

Sağlığı azaltmadan önce, script önce etiketlenen oyuncunun patlamayı başlatan oyuncu ile aynı takımda olup olmadığını doğrular. Eğer aynı takımsa, script patlama verilerini tamamen görmezden gelir.


local character = playerTagged.Character
local isFriendly = playerBlasted.Team == playerTagged.Team
-- Dost ateşi devre dışı
if isFriendly then
return
end

Ancak, eğer etiketlenen oyuncu düşman takımdaysa, oyuncu patlamanın türüne göre uygun miktarda hasar alır. Ayrıca, oyuncu etiketlendikçe yeterince hasar alırsa, script patlamayı başlatan oyuncunun takımına bir puan ödüllendirir. Örnek puanların nasıl takip edildiği hakkında daha fazla bilgi için, tutorialda Turlar ekleyin bölümüne bakın.


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

Eğer deneyimi şu anda test ederseniz, tüm oyuncular, hangi takıma ait olduklarından bağımsız olarak arenanın karşı uçlarındaki doğma alanlarında rastgele doğacaklar; bu da her takımın birbirlerinin yanına doğması anlamına gelir.

Bu sorunu çözmek için, tutorialın bir sonraki bölümü, takım doğumunu belirli doğma yerleriyle kısıtlamanın arkasındaki özelleştirilmiş mantığı, oyuncuların patlayıcı seçtikten sonra doğma alanından çıkarken istemci durumunu nasıl yöneteceğinizi ve sağlıkları sıfıra ulaştığında oyuncuları doğma alanlarına veya lobilerine yeniden doğurmayı öğretecek.

©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.