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 để 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 đối 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 các chiến lược gameplay phức tạp, phối hợp vượt ra ngoài khả năng của bất kỳ người chơi cá nhân nào.

Sử dụng trò chơi 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 công 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à thành viên đội đối thủ thông qua các chỉ báo đội trên màn hình và trong trò chơi.
  • Kích hoạt 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 xuất hiện hoặc tái xuất hiện tại một sảnh trung lập hoặc khu vực xuất hiện của đội, tùy chỉnh hình ảnh trường lực góc nhìn thứ nhất, và xử lý trạng thái của khách hàng từ cả máy chủ và khách hàng.

Gán màu đội

Trò chơi laser tag mẫu sử dụng dịch vụ Teams làm 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ụ, mà không cần nỗ lực lập trình bổ sung, 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 dưới độ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ọ.
  • Đưa người chơi đến các vị trí xuất hiện khác nhau mà chỉ đội của họ có thể truy cập.

Vì chức năng mặc định này, mẫu cho phép dịch vụ Teams, sau đó sử dụng hai đối tượng Team khác nhau 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ới nhau, và cho phép người chơi dễ dàng quét xung quanh và định hướng trong tòa nhà và với các người chơi khác.

Điều quan trọng là lưu ý tên chính xác của BrickColor cho thuộc tính Team.Color vì trò chơi sử dụng tên này trong nhiều kịch bản trong trò chơi để theo dõi người chơi khi họ phân loại vào các đội, tăng điểm khi người chơi đánh dấu ra các người chơi đối thủ trong một vòng, và cập nhật các phần tử UI 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 để có thể gán màu sắc và biểu tượng chính xác 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 hiểu đội nào họ thuộc về, và phân biệt giữa đồng đội và thành viên đội đối thủ. Khả năng này rất quan trọng vì gameplay của một trò chơi bắn súng góc nhìn thứ nhất yêu cầu người chơi đưa ra các quyết định chiến lược nhanh chóng trong khi họ đang ở trong các khu vực chiến đấu để không bị đánh dấu ra và thua vòng.

Để chuẩn bị cho người chơi thành công, trò chơi 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 – UI tùy chỉnh trên màn hình hiển thị màu sắc và biểu tượng đội của người chơi.
  • Chỉ báo Đội – UI tùy chỉnh trong trò chơi hiển thị màu sắc đội của người chơi.
  • Chỉ báo Bảng xếp hạng – UI mặc định của dịch vụ Teams trên màn hình nhóm người chơi dưới màu sắc đội của họ.
  • Tô màu Tên – UI trong trò chơi mặc định của dịch vụ Teams tô màu tên người chơi phía trên đầu họ theo 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ò chơi
Chỉ báo Đội
Tô màu Tên

Bạn không cần phải làm thêm bất kỳ công việc nào cho Chỉ báo Bảng xếp hạng hoặc Tô màu Tên ngoài việc gán màu độ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 nỗ lực lập trình nhiều hơn để cả hiển thị các chỉ báo và che khuất các chỉ báo của đối thủ khi họ ở 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 triển khai từng phần tử UI, hãy xem Chỉ báo Người chơiChỉ báo Đội từ chương trình giảng dạy UI.

Vô hiệu hóa bắn nhầm

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

Để hiểu cách mẫu triển khai chức năng này, hãy xem cách ServerScriptServiceLaserBlastHandlerprocessTaggedPlayersonPlayerTagged xử lý việc gây sát thương cho các người chơi bị đánh dấu. Khi máy chủ phát hiện va chạm giữa phát bắ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 người chơi nào đã bắn phát, người chơi nào bị trúng phát, và bao nhiêu sát thương nó nên loại bỏ 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 trước tiên xác minh xem người chơi bị đánh dấu có cùng đội với người chơi đã khởi xướng phát bắn hay không. Nếu họ ở cùng một đội, kịch bản sẽ hoàn toàn bỏ qua dữ liệu phát bắn.

local character = playerTagged.Character
local isFriendly = playerBlasted.Team == playerTagged.Team
-- Không cho phép bắn nhầm
if isFriendly then
return
end

Tuy nhiên, nếu người chơi bị đánh dấu thuộc đội đối thủ, người chơi sẽ nhận lượng sát thương phù hợp theo loại súng. Ngoài ra, nếu người chơi nhận đủ sát thương để bị đánh dấu ra, kịch bản sẽ thưởng một điểm cho đội của người chơi đã khởi xướng phát bắn. Để biết thêm thông tin về cách mẫu theo dõi điểm, 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 trò chơi ngay bây giờ, tất cả người chơi sẽ ngẫu nhiên xuất hiện tại một trong hai khu vực xuất hiện ở hai đầu đối diện của đấu trường mà không quan tâm đến đội nào họ thuộc về, có nghĩa là mỗi đội sẽ xuất hiện 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 phía sau việc hạn chế việc xuất hiện đội tại các vị trí xuất hiện nhất định, xử lý trạng thái của khách hàng khi người chơi rời khỏi khu vực xuất hiện sau khi chọn súng của họ, và tái xuất hiện người chơi trở lại khu vực xuất hiện hoặc sảnh khi sức khỏe của họ đạt đến 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.