Tạo nhóm cho phép bạn sắp xếp người chơi thành nhóm cạnh tranh với nhau để hoàn thành một mục tiêu chung, chẳng hạn như ghi bàn nhiều nhất hoặc vượt qua một mục tiêu trước khi các thành viên trong đội khác. Đối với một người chơ
Sử dụng trải nghiệm Laser Tag mẫu như một tham khảo, bài này của hướng dẫn cho bạn cách sắp xếp người chơi thành nhóm, bao gồm hướng dẫn scripting trên:
- Sử dụng các chức năng mặc định của dịch vụ Teams để giao nhiệm vụ cho người chơi thuộc đội xanh hoặc hồng.
- Giúp người chơi phân biệt giữa các đồng minh và thành viên trong nhóm kẻ thù thông qua các chỉ số trên màn hình và trong kinh nghiệm.
- Mở khóa gameplay tha thứ không trừng phạt người chơi vì đã cho phép nổ tung đồng đội của họ.
Sau khi hoàn thành phần này, bạn sẽ tìm hiểu về các script cho phép người chơi tạo hoặc phục hồi đến một khu vực sản xuất hoặc trung tâm bằng cách sử dụng trạng thái người chơi, tùy chỉnh hình ảnh trượt chuột người chơi và xử lý trạng thái người chơi từ máy chủ và máy chủ.
Gán Màu Đội
Trải nghiệm laser tag mẫu sử dụng dịch vụ Teams như một nền tảng để tạo ra hai đội vì dịch vụ cung cấp các hành vi xếp hạng đội tích hợp mà hoạt động một cách rộng rãi ngoài hộp. Ví dụ, mà không cần thêm bất kỳ nỗ lực lập trình nào, dị
- Sắp xếp và cân bằng người chơi một cách công bằng vào mỗi đội.
- Tập hợp người chơi dưới sự lãnh đạo của họ trên bảng xếp hạng.
- Đổi tên người chơi trong không gian 3D thành màu thuộc hạ của đội tương ứng.
- Tạo những người chơi để đến các vị trí đẻ trứng khác nhau mà chỉ đội của họ mới có thể truy cập.
Do tính năng này mặc định, mẫu này cho phép dịch vụ Teams, sau đó sử dụng hai đối tượng
Quan trọng để lưu ý tên chính xác BrickColor cho Team.Color
startSyncingTeamColor đến đây là những tham chiếu đến Class.Team.Color để nó có thể gán màu và biểu tượng đúng cho người đại diện của đội người chơi ở góc dưới bên trái của màn hình.
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ỉ số đội
Một khi một người chơi được sắp xếp thành một đội, họ cần phải có thể nhanh chóng giải mã nhóm mà họ thuộc về và phân biệt giữa các đồng minh và thành viên trong đội kẻ thù. Khả năng này quan trọng vì khả năng gameplay của một trò chơi bắn
Để thiết lập người chơi cho thành công, trải nghiệm laser tag mẫu cung cấp nhiều thông báo đội trên màn hình và trong không gian 3D:
- Chỉ báo người chơi – Tùy chỉnh UI trên màn hình hiển thị màu và biểu tượng của đội người chơi.
- Team Indicator – UI tùy chỉnh trong trải nghiệm hiển thị màu nhóm của người chơi.
- Leaderboard Indicator – Dịch vụ UI trên màn hình mặc định của nhóm người chơi dưới màu mũi tên của nhóm.
- Tên Tint – Dịch vụ Tên Đội trong trải nghiệm người dùng mà tint tên người dùng trên đầu của họ cho màu của đội của họ.
Bạn không cần phải thực hiện bất kỳ công việc bổ sung nào cho Thẻ xếp hạng hoặc Màu tên bên ngoài việc giao cấp nhóm màu từ phần trước của hướng dẫn, nhưng các thẻ UI tùy
Vô hiệu hóa Lửa Thân Thiện
Mặc dù một số trải nghiệm người chơi thứ nhất bị trừng phạt khi phát hiện ra đồng đội của họ, nhưng trải nghiệm laser tag mẫu cho phép người chơi tha thứ nhiều hơn cho gameplay bằng cách vô hiệu hóa lửa thân thiện. Điều này cho phép mọi người chỉ tăng điểm số đội của họ, không
Để hiểu cách mà mẫu thực hiện chức năng này, xem xét làm thế nào ServerScriptService > LaserBlastHandler > processTaggedPlayers > 1> onPlayerTag
local function onPlayerTagged(playerBlasted: Player, playerTagged: Player, damageAmount: number)
Trước khi giảm sức khỏe, chương trình đầu tiên xác minh nếu người chơi được gắn nhãn ở cùng một đội với người chơi khởi xảy nổ. Nếu họ ở cùng một đội, chương trình sẽ bỏ qua dữ liệu nổ tung hoàn toàn.
local character = playerTagged.Characterlocal isFriendly = playerBlasted.Team == playerTagged.Team-- Tắt khản ngục bắn thân thiệnif isFriendly thenreturnend
Tuy nhiên, nếu người chơi được gắn nhãn ở trên đội kẻ thù, người chơi nhận số lượng lớn sát thương theo loại blaster. Ngoài ra, nếu người chơi nhận đủ sát thương để trở thành người chơi bị gắn nhãn, script sẽ
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
Nếu bạn kiểm tra trải nghiệm ngay bây giờ, tất cả người chơi sẽ ngẫu nhiên xuất hiện ở một trong những khu vực đẻ trứng ở các đầu góc đối diện của đấu trường, có nghĩa là mỗi đội sẽ xuất hiện ngay bên cạnh nhau.
Để đối phó với vấn đề này, phần sau của hướng dẫn cho bạn về cách tùy chỉnh trích dẫn động cơ đằng sau việc hạn chế sự tạo nên của đội đến một số vị trí đẻ trứng, xử lý tình trạng người chơi khi rời khỏi khu vực đẻ trứng sau khi chọn máy chủ của h