Tạo đội

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Tạo đội cho phép bạn phân loại người chơi thành các nhóm để cạnh tranh nhằm hoàn thành một mục tiêu chung, chẳng hạn như ghi điểm nhiều nhất hoặc vượt qua vạch đích trước các thành viên đội kẻ thù khác. Đối với một trò chơi bắn súng góc nhìn thứ nhất, việc tạo đội đặc biệt quan trọng vì nó thiết lập những chiến lược gameplay phức tạp và phối hợp vượt ra ngoài khả năng của mỗi người chơi.

Sử dụng trải nghiệm laser tag mẫu làm tham chiếu, phần này của hướng dẫn sẽ dạy bạn cách phân loại người chơi thành các đội, bao gồm hướng dẫn lập trình về:

  • Sử dụng chức năng mặc định của dịch vụ Teams để phân bổ người chơi vào đội xanh hoặc hồng.
  • Giúp người chơi phân biệt giữa đồng đội và kẻ thù thông qua các chỉ báo đội trên màn hình và trong trải nghiệm.
  • Cho phép gameplay khoan dung mà không phạt người chơi vì bắn nhầm đồng đội.

Sau khi bạn hoàn thành phần này, bạn sẽ tìm hiểu về các kịch bản cho phép người chơi spawn hoặc respawn vào một sảnh trung lập hoặc khu vực spawn đội, tùy chỉnh hình ảnh lực trường góc nhìn thứ nhất, và xử lý trạng thái client từ cả server và client.

Gán màu đội

Trải nghiệm laser tag mẫu sử dụng dịch vụ Teams như một cơ sở để tạo ra hai đội vì dịch vụ này cung cấp hành vi phân loại đội tích hợp sẵn, hoạt động tốt ngay lập tức. Ví dụ, không cần bất kỳ nỗ lực lập trình bổ sung nào, dịch vụ này xử lý các hành động như:

  • Phân loại và cân bằng người chơi đều vào mỗi đội.
  • Nhóm người chơi theo đội của họ trên bảng xếp hạng.
  • Tô màu tên người chơi trong không gian 3D theo màu đội tương ứng của họ.
  • Phân bổ người chơi đến các vị trí spawn riêng biệt mà chỉ đội của họ có thể truy cập.

Do tính năng mặc định này, mẫu sẽ bật dịch vụ Teams, sau đó sử dụng hai đối tượng Team riêng biệt với các giá trị thuộc tính Team.Color khác nhau để đại diện cho mỗi đội: mint cho đội tập hợp ở một bên bản đồ và carnation pink cho đội tập hợp ở phía đối diện của bản đồ. Những màu sắc cụ thể này rất hữu ích vì chúng bổ sung cho nhau, có nghĩa là chúng tương phản tốt, và cho phép người chơi dễ dàng quét xung quanh và định hướng trong môi trường và với nhau.

Điều quan trọng là lưu ý tên chính xác BrickColor cho thuộc tính Team.Color vì trải nghiệm này sử dụng tên này trong nhiều kịch bản trong trải nghiệm để theo dõi người chơi khi họ phân loại thành các đội, tăng điểm khi người chơi đánh ra kẻ thù trong một vòng, và cập nhật các yếu tố giao diện người dùng tùy chỉnh. Ví dụ, khi một vòng bắt đầu, ReplicatedStorageHUDGuiSetup yêu cầu startSyncingTeamColor, và startSyncingTeamPoints mà cả hai đều tham chiếu đến Team.Color để thực hiện các hành động độc đáo cho mỗi đội.

startSyncingTeamColor tham chiếu đến Team.Color để nó có thể gán màu sắc và biểu tượng đúng cho chỉ báo đội của người chơi ở góc dưới bên trái màn hình của họ.

Đội Xanh
Đội Hồng

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

Hiển thị chỉ báo đội

Khi một người chơi được phân loại vào một đội, họ cần có khả năng nhanh chóng phân tích đội của mình, và phân biệt giữa đồng đội và các thành viên đội kẻ thù. Khả năng này rất quan trọng vì gameplay của một trải nghiệm bắn súng góc nhìn thứ nhất đòi hỏi người chơi phải đưa ra những quyết định chiến lược nhanh chóng trong khi họ ở trong các khu vực chiến đấu để không bị đánh ra và thua vòng.

Để chuẩn bị cho người chơi thành công, trải nghiệm laser tag mẫu cung cấp nhiều chỉ báo đội cả trên màn hình và trong không gian 3D:

  • Chỉ báo Người chơi – Giao diện UI tùy chỉnh trên màn hình hiển thị màu sắc đội và biểu tượng của người chơi.
  • Chỉ báo Đội – Giao diện UI tùy chỉnh trong trải nghiệm hiển thị màu sắc đội của người chơi.
  • Chỉ báo Bảng xếp hạng – Giao diện UI mặc định của dịch vụ Teams hiển thị người chơi dưới màu sắc đội của họ.
  • Ghi tâm tên – Giao diện UI mặc định của dịch vụ Teams hiển thị tên người chơi phía trên đầu họ với màu sắc đội của họ.
Chỉ báo Trên màn hình
Chỉ báo Người chơi
Chỉ báo Bảng xếp hạng
Chỉ báo Trong Trải nghiệm
Chỉ báo Đội
Ghi tâm tên

Bạn không cần thực hiện thêm bất kỳ công việc nào cho Chỉ báo Bảng xếp hạng hoặc Ghi tâm tên ngoài việc gán màu sắc đội từ phần trước của hướng dẫn, nhưng các chỉ báo đội UI tùy chỉnh yêu cầu nhiều nỗ lực lập trình hơn để hiển thị các chỉ báo và che khuất các chỉ báo kẻ thù khi chúng ở phía sau tường. Để có giải thích đầy đủ về các kịch bản điều khiển hành vi UI tùy chỉnh, cũng như cách thực hiện từng yếu tố UI, hãy xem Chỉ báo Người chơiChỉ báo Đội từ UI Curriculum.

Tắt chiến tranh giữa bạn bè

Trong khi một số trải nghiệm bắn súng góc nhìn thứ nhất phạt người chơi vì bắn đồng đội, trải nghiệm laser tag mẫu cho phép gameplay khoan dung hơn bằng cách không cho phép tấn công đồng đội. Quyết định thiết kế này cho phép mọi người chỉ tăng điểm cho đội của họ, không giảm đi do các tình huống tai nạn trong gameplay.

Để hiểu cách mẫu thực hiện chức năng này, hãy kiểm tra cách mà ServerScriptServiceLaserBlastHandlerprocessTaggedPlayersonPlayerTagged xử lý việc gây sát thương cho người chơi bị đánh dấu. Khi server phát hiện một va chạm giữa vụ nổ của một người chơi và một người chơi khác, nó gọi hàm onPlayerTagged để hiểu được người chơi nào đã bắn vụ nổ, người chơi nào bị bắn trúng, và số lượng sát thương mà nó nên giảm bớt khỏi sức khỏe của người chơi theo loại súng.


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

Trước khi giảm sức khỏe, kịch bản đầu tiên xác minh xem người chơi bị đánh dấu có cùng đội với người chơi đã phát động vụ nổ không. Nếu họ trong cùng một đội, kịch bản sẽ bỏ qua hoàn toàn dữ liệu vụ nổ.


local character = playerTagged.Character
local isFriendly = playerBlasted.Team == playerTagged.Team
-- Tắt chiến tranh giữa bạn bè
if isFriendly then
return
end

Tuy nhiên, nếu người chơi bị đánh dấu thuộc đội kẻ thù, người chơi sẽ chịu số lượng sát thương thích hợp tùy vào loại súng. Thêm vào đó, nếu người chơi nhận đủ sát thương để bị đánh ra, kịch bản sẽ thưởng một điểm cho đội của người chơi đã phát động vụ nổ. Để biết thêm thông tin về cách mẫu theo dõi điểm số, hãy xem Thêm vòng ở phần sau của hướng dẫ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

Nếu bạn thử nghiệm ngay bây giờ, tất cả người chơi sẽ ngẫu nhiên spawn tại một trong hai khu vực spawn ở hai đầu đối diện của sân chơi mà không cần quan tâm đến đội của họ, có nghĩa là mỗi đội sẽ spawn ngay cạnh nhau.

Để giải quyết vấn đề này, phần tiếp theo của hướng dẫn sẽ dạy bạn về logic tùy chỉnh đằng sau việc hạn chế spawn đội đến các vị trí spawn nhất định, xử lý trạng thái client khi người chơi rời khỏi khu vực spawn sau khi chọn súng của họ, và respawn người chơi trở lại khu vực spawn hoặc sảnh của họ khi sức khỏe của họ đạt mức không.

©2026 Roblox Corporation. Roblox, logo Roblox và Powering Imagination là các nhãn hiệu đã đăng ký và chưa đăng ký của chúng tôi tại Hoa Kỳ và các quốc gia khác.