Những thiết bị nguy hiểm giảm sức khỏe của người chơi khi chạm vào chúng. Là một điểm xuất phát đơn giản, bài hướng dẫn này của hướng dẫn cho bạn cách tạo ra một phần lớn vô hình ở cùng mức độ như nước trong trải nghiệm của bạn
Tạo một mối nguy hiểm nước cơ bản
Để tạo ra nguy cơ nước cơ bản:
Trong cửa sổ Explorer , thêm một thư mục mới vào thư mục World , sau đó đổi tên nó thành Hazards . Hãy đảm bảo tên được viết đúng với chữ viết hoa chính xác, không đổi tên nó thì mã sẽ không hoạt động.
Trong thư mục Nguy hiểm , hãy in một phần khối và đổi tên nó thành Hazard .
Di chuyển và thay đổi kích thước của bộ phận để tغطy dòng nước xung quanh hòn đảo và các nền tảng. Ví dụ, trải nghiệm Island Jump - Scripting trên hòn đảo 825, 1, 576 và
Chọn bộ phận, sau đó trong cửa sổ Tính chất , hãy cấu hình các thuộc tính sau đây để mối nguy hiểm là vô hình, và người chơi có thể vượt qua nó một cách an toàn:
- Đặt Độ trong suốt lên 1 . Điều này làm cho nguy hiểm trở nên vô hình, so dass nước thực sự xuất hiện như nguy hiểm.
- Vô hiệu hóa CanCollide . Điều này choEngine biết rằng các bộ phận khác có thể vượt qua nguy hiểm mà không bị ảnh hưởng, có nghĩa là người chơi có thể rơi qua nguy hiểm.
- Bật Cố định . Điều này cho phép máy chủ không bao giờ thay đổi vị trí của mối nguy hiểm do bất kỳ mô phỏng liên quan đến vật lý, có nghĩa là người chơi có thể chạm vào mối nguy hiểm mà không ảnh hưởng đến vị trí của nó.
Tạo một Script trong ServerScriptService , sau đó đổi tên nó thành HazardService .
Thay thế mã mặc định bằng mã sau đây:
local Players = game:GetService("Players")local Workspace = game:GetService("Workspace")local hazardsFolder = Workspace.World.Hazardslocal hazards = hazardsFolder:GetChildren()local function onHazardTouched(otherPart)local character = otherPart.Parentlocal player = Players:GetPlayerFromCharacter(character)if player thenlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenhumanoid.Health = 0endendendfor _, hazard in hazards dohazard.Touched:Connect(onHazardTouched)endGiải thích mãCác dịch vụ nguy hiểm có nhiều điểm tương đồng với dịch vụ tiền tệ . Tuy nhiên, thay vì thu thập một xu, người chơi có sức khỏe của họ đặt ở 0 khi họ chạm vào một nguy hiểm.
Cảm thấy thoải mái để điều chỉnh, thêm hoặc xóa các thiết bị nguy hiểm trong trải nghiệm của bạn để tạo ra những rào chắn độc đáo. Mặc dù chúng được đựng trong thư mục Nguy hiểm , thì mã lược kết nối người xử lý sự kiện với tất cả các nguy hiểm của b
Kết Nối với Người Chơi
Chu kỳ của người chơi diễn tải các sự kiện xảy ra khi người chơi tương tác trong kinh nghiệm của bạn, chẳng hạn như tham gia, rời đi hoặc respawn. Bạn cần kết nối các hành động đến các sự kiện này để thi hành đúng cách cho mỗi sự kiện lớ
local function onPlayerAdded(player)
-- Đặt lại tiền người chơi đến 0
updatePlayerCoins(player, function(_)
return 0
end)
player.CharacterAdded:Connect(function(character)
-- WaitForChild sẽ dừng chuỗi người chơi, vì vậy dưới đây nên thực hiện trong một chủ đề riêng
task.spawn(function()
-- Khi một người chơi chết
character:WaitForChild("Humanoid").Died:Connect(function()
-- Đặt lại tiền người chơi đến 0
updatePlayerCoins(player, function(_)
return 0
end)
end)
end)
end)
end
-- Khởi tạo bất kỳ người chơi nào đã được thêm trước khi kết nối với sự kiện PlayerAdded
for _, player in Players:GetPlayers() do
onPlayerAdded(player)
end
local function onPlayerRemoved(player)
updatePlayerCoins(player, function(_)
return nil
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Players.PlayerRemoving:Connect(onPlayerRemoved)
Mã này định nghĩa các hàm để đặt lại số lượng tiền xu trong các sự kiện phù hợp trong chu kỳ sống:
- Player.PlayerAdded bắt đầu khi một người chơi tham gia vào trải nghiệm, và đặt số tiền xu thành 0 .
- Player.CharacterAdded bắt đầu khi mô hình nhân vật của một người được thêm vào thế giới. Nó xảy ra sau khi PlayerAdded và mỗi khi người chơi respawn.
- Humanoid.Died bắt đầu khi một người chơi chết, và đặt số tiền xu lên 0 . task.spawn() tạo một luồng chủ đề riêng cho xử lý điều này, so other aspects of the player life cycle can execute.
- Player.PlayerRemoved những khi một người chơi rời khỏi trải nghiệm để làm sạch tình trạng người chơi.
- Mã này chứa một vấn đề tiềm năng mà người chơi có thể thu thập xu trước khi sự kiện Players.PlayerAdded được thực hiện và sau đó có thể có số đếm xu của họ được đặt lại thành zero. Để giải quyết vấn đề này, hãy xem xét
Thử nghiệm
Đã đến lúc xem nếu nguy hiểm người chơi hoạt động như ý muốn của nó. Khi bạn chạm vào nước, nhân vật của bạn sẽ chết và mất tiền của họ. Để kiểm tra trò chơi của bạn:
Ở thanh menu, hãy nhấp vào nút Chơi . Studio bắt đầu chế độ thử nghiệm.
Di chuyển nhân vật của bạn để thu thập một số xu, sau đó nhảy vào nước. Nếu các kịch bản của bạn hoạt động đúng cách, nhân vật của bạn chết, và số lượng tiền tệ trên bảng xếp hạng được thiết lập lại thành 0 .