Buat tim

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Membuat tim memungkinkan Anda untuk mengelompokkan pemain ke dalam grup yang bersaing untuk menyelesaikan tujuan bersama, seperti mencetak poin terbanyak atau melintasi garis akhir sebelum anggota tim lawan lainnya. Untuk permainan tembak-menembak orang pertama, membuat tim sangat penting karena ini menetapkan strategi permainan yang kompleks dan terkoordinasi yang melampaui kemampuan permainan individu.

Dengan menggunakan pengalaman laser tag sampel sebagai referensi, bagian dari tutorial ini mengajarkan Anda cara mengurutkan pemain ke dalam tim, termasuk panduan pemrograman tentang:

  • Menggunakan fungsi bawaan layanan Teams untuk menetapkan pemain ke dalam tim hijau atau merah muda.
  • Membantu pemain membedakan antara sekutu mereka dan anggota tim lawan melalui indikator tim di layar dan dalam pengalaman.
  • Mengaktifkan permainan yang lebih toleran yang tidak menghukum pemain karena menembaki rekan tim mereka.

Setelah Anda menyelesaikan bagian ini, Anda akan mempelajari tentang skrip yang memungkinkan pemain untuk muncul atau respawn ke lobi netral atau zona spawn tim, menyesuaikan visual bidang gaya orang pertama, dan menangani status klien baik dari server maupun klien.

Tetapkan warna tim

Pengalaman laser tag sampel menggunakan layanan Teams sebagai dasar untuk membuat dua tim karena layanan ini menawarkan perilaku pengurutan tim bawaan yang secara luas bekerja tanpa memerlukan pengkodean tambahan. Misalnya, tanpa usaha pengkodean tambahan, layanan ini menangani tindakan seperti:

  • Mengurutkan dan menyeimbangkan pemain secara merata ke dalam setiap tim.
  • Mengelompokkan pemain di bawah tim mereka di papan peringkat.
  • Mengubah warna nama pemain di ruang 3D sesuai dengan warna tim mereka.
  • Memunculkan pemain di lokasi spawn yang berbeda yang hanya dapat diakses oleh tim mereka.

Karena fungsi bawaan ini, sampel mengaktifkan layanan Teams, kemudian menggunakan dua objek Team yang berbeda dengan nilai properti Team.Color yang berbeda untuk mewakili masing-masing tim: mint untuk tim yang berkumpul di satu sisi peta, dan carnation pink untuk tim yang berkumpul di sisi berlawanan dari peta. Warna-warna spesifik ini berguna karena mereka saling melengkapi, yang berarti mereka sangat kontras satu sama lain, dan memungkinkan pemain untuk dengan mudah memindai lingkungan mereka dan mengorientasikan diri mereka di dalam gedung dan terhadap pemain lainnya.

Penting untuk mencatat nama tepat BrickColor untuk properti Team.Color karena pengalaman menggunakan nama ini di banyak skrip dalam pengalaman untuk melacak pemain saat mereka diurutkan ke dalam tim, menambah poin saat pemain menandai pemain lawan selama putaran, dan memperbarui elemen UI kustom. Misalnya, saat putaran dimulai, ReplicatedStorageHUDGuiSetup membutuhkan startSyncingTeamColor, dan startSyncingTeamPoints yang keduanya merujuk Team.Color untuk melakukan tindakan unik untuk setiap tim.

startSyncingTeamColor merujuk pada Team.Color agar dapat menetapkan warna dan ikon yang benar untuk indikator tim pemain di sudut kiri bawah layar mereka.

Tim Hijau
Tim Merah Muda

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

Tampilkan indikator tim

Setelah seorang pemain diurutkan ke dalam tim, mereka perlu dapat dengan cepat memahami tim mana yang mereka miliki, dan membedakan antara sekutu mereka dan anggota tim lawan. Kemampuan ini penting karena permainan pengalaman tembak-menembak orang pertama membutuhkan pemain untuk membuat keputusan strategis yang cepat saat mereka berada di zona perang agar tidak tertebak dan kehilangan putaran.

Untuk mempersiapkan pemain untuk sukses, pengalaman laser tag sampel menyediakan beberapa indikator tim baik di layar maupun di ruang 3D:

  • Indikator Pemain – UI kustom di layar yang menampilkan warna tim dan ikon pemain.
  • Indikator Tim – UI kustom di dalam pengalaman yang menampilkan warna tim pemain.
  • Indikator Papan Peringkat – UI layanan Tim bawaan di layar yang mengelompokkan pemain di bawah warna tim mereka.
  • Gambar Nama – UI di dalam pengalaman layanan Tim bawaan yang mewarnai nama pemain di atas kepala mereka sesuai dengan warna tim mereka.
Indikator Di Layar
Indikator Pemain
Indikator Papan Peringkat
Indikator Dalam Pengalaman
Indikator Tim
Gambar Nama

Anda tidak perlu melakukan pekerjaan tambahan untuk Indikator Papan Peringkat atau Gambar Nama di luar menetapkan warna tim dari bagian sebelumnya dari tutorial, tetapi indikator tim UI kustom memerlukan lebih banyak upaya pemrograman untuk menampilkan indikator dan menutupi indikator musuh ketika mereka berada di balik dinding. Untuk penjelasan lengkap tentang skrip yang mengontrol perilaku UI kustom, serta cara menerapkan setiap elemen UI itu sendiri, lihat Indikator Pemain dan Indikator Tim dari Kurikulum UI.

Nonaktifkan tembakan teman

Sementara beberapa pengalaman tembak-menembak orang pertama menghukum pemain yang menembaki rekan tim mereka sendiri, pengalaman laser tag sampel mengizinkan permainan yang lebih toleran dengan menonaktifkan tembakan teman. Keputusan desain ini memungkinkan semua orang untuk hanya meningkatkan skor tim mereka, bukan menguranginya karena kecelakaan dalam permainan.

Untuk memahami bagaimana sampel menerapkan fungsi ini, periksa bagaimana ServerScriptServiceLaserBlastHandlerprocessTaggedPlayersonPlayerTagged menangani penanganan kerusakan pada pemain yang ditandai. Ketika server mendeteksi tabrakan antara ledakan seorang pemain dan pemain lainnya, ia memanggil fungsi onPlayerTagged untuk memahami pemain mana yang menembakkan ledakan tersebut, pemain mana yang terkena ledakan, dan berapa banyak kerusakan yang harus dihilangkan dari kesehatan pemain sesuai dengan tipe blaster.


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

Sebelum mengurangi kesehatan, skrip pertama-tama memverifikasi apakah pemain yang ditandai ada di tim yang sama dengan pemain yang memulai ledakan. Jika mereka berada di tim yang sama, skrip mengabaikan data ledakan tersebut sepenuhnya.


local character = playerTagged.Character
local isFriendly = playerBlasted.Team == playerTagged.Team
-- Larang tembakan teman
if isFriendly then
return
end

Namun, jika pemain yang ditandai berada di tim musuh, pemain tersebut akan menerima jumlah kerusakan yang sesuai berdasarkan tipe blaster. Selain itu, jika pemain menerima cukup kerusakan untuk tertebak, skrip memberikan poin kepada tim pemain yang memulai ledakan tersebut. Untuk informasi lebih lanjut tentang bagaimana sampel melacak poin, lihat Tambahkan putaran di bagian tutorial selanjutnya.


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

Jika Anda menguji pengalaman saat ini, semua pemain akan muncul secara acak di salah satu zona spawn di ujung arena yang berlawanan terlepas dari tim mana yang mereka miliki, yang berarti bahwa setiap tim akan muncul tepat di samping satu sama lain.

Untuk mengatasi masalah ini, bagian berikut dari tutorial ini mengajarkan Anda tentang logika kustom di balik membatasi spawning tim ke lokasi spawn tertentu, menangani status klien saat pemain meninggalkan area spawn setelah memilih blaster mereka, dan merespawn pemain kembali ke zona spawn atau area lobi mereka ketika kesehatan mereka mencapai nol.

©2026 Roblox Corporation. Roblox, logo Roblox, dan Powering Imagination termasuk dalam merek dagang kami yang terdaftar dan tidak terdaftar di AS dan negara lainnya.