Bẫy làm giảm sức khỏe của người chơi là một yếu tố chơi trò chơi thú vị có thể được lập trình bằng các câu lệnh điều kiện. Thực hành sử dụng các điều kiện bằng cách tạo một phần làm cho sức khỏe của người chơi giảm xuống zero khi chạm vào.
Thiết lập cái bẫy
Bẫy hoạt động rất tốt trong các trải nghiệm có thách thức dựa trên chuyển động, như obbies. Các bước này sẽ bắt đầu bằng cách thiết lập các biến và hàm cần thiết. Hãy làm càng nhiều càng tốt mà không cần nhìn vào các hộp mã trước.
Tạo và đặt tên cho một phần bẫy. Chèn một kịch bản vào phần đó.
Trong kịch bản, thêm một bình luận mô tả và sau đó sử dụng một biến để tham chiếu đến cha của kịch bản.
-- Nếu một người chơi chạm vào phần này, đặt sức khỏe của họ thành 0local trapPart = script.ParentTạo một hàm có tên onTouch() với một tham số có tên là otherPart.
-- Nếu một người chơi chạm vào phần này, đặt sức khỏe của họ thành 0local trapPart = script.Parentlocal function onTouch(otherPart)endKết nối hàm với sự kiện Touched của phần bẫy để chạy mỗi khi có thứ gì đó chạm vào phần.
local trapPart = script.Parentlocal function onTouch(otherPart)endtrapPart.Touched:Connect(onTouch)
Kiểm tra chạm của người chơi
Nhớ rằng, tham số otherPart ghi lại bất cứ thứ gì chạm vào phần bẫy, có thể là một phần của người chơi hoặc chỉ là nền.
Để đảm bảo rằng cái bẫy chỉ tiêu diệt người chơi và không tiêu diệt các vật dụng trang trí ngẫu nhiên, hãy sử dụng một câu lệnh if/then để kiểm tra xem bất cứ thứ gì có trong otherPart có chứa một đối tượng Humanoid hay không.
Tìm một đối tượng cụ thể
Hàm FindFirstChildWhichIsA() có thể được sử dụng để tìm các loại đối tượng cụ thể, rất tiện lợi vì chúng ta đang tìm kiếm một đối tượng loại Humanoid. Người chơi có thể chạm vào bẫy chỉ với một phần nhỏ của hình đại diện của họ, vì vậy một biến phải được thiết lập để tìm cha của phần chạm vào và tìm kiếm nó để tìm một Humanoid.
Trong onTouch(), gõ local character = otherPart.Parent.
local trapPart = script.Parentlocal function onTouch(otherPart)-- Tìm đối tượng cha của otherPartlocal character = otherPart.ParentendtrapPart.Touched:Connect(onTouch)Kiểm tra xem character có thuộc tính Humanoid không bằng cách gõ:
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")endtrapPart.Touched:Connect(onTouch)
Kiểm tra với câu lệnh if
Nếu một Humanoid được tìm thấy, thì đặt Sức khỏe của Humanoid xuống zero.
Sử dụng một câu lệnh if để kiểm tra xem một Humanoid có được gán thành công cho local humanoid không.
local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- Đánh giá xem có tìm thấy Humanoid khôngif humanoid thenendendtrapPart.Touched:Connect(onTouch)Thêm một câu lệnh in và kiểm tra mã cho đến nay.
local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- Đánh giá xem có tìm thấy Humanoid khôngif humanoid thenprint("Đã tìm thấy một Humanoid")endendtrapPart.Touched:Connect(onTouch)Chạy mã và kiểm tra rằng bạn có thể thấy đầu ra mỗi khi một người chơi chạm vào phần.
Thay đổi sức khỏe của người chơi
Nếu câu lệnh là đúng, bạn có thể sử dụng cùng một biến humanoid để đặt sức khỏe của người chơi xuống 0.
Giữa then và end, gõ humanoid.Health = 0.
Kịch bản hoàn thànhlocal trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- Đánh giá xem có tìm thấy Humanoid khôngif humanoid thenprint("Đã tìm thấy một Humanoid")humanoid.Health = 0endendtrapPart.Touched:Connect(onTouch)Kiểm tra cái bẫy.
Tóm tắt
Phần bẫy này đã sử dụng các điều kiện để phát hiện các phần Humanoid và đặt sức khỏe của Humanoid xuống zero. Kịch bản này là một cải tiến so với kịch bản bẫy trước đó, cái đã tiêu diệt bất kỳ đối tượng nào chạm vào mà không phân biệt nó là gì.
Tuy nhiên, nó vẫn có một vài thiếu sót. Humanoid không chỉ có trong người chơi. Humanoid cũng được tìm thấy trong các nhân vật không thể chơi được. Kịch bản này cũng chỉ tốt trong việc đặt sức khỏe của người chơi xuống zero. Bạn có thể thử nghiệm với việc trừ một lượng nhỏ sức khỏe, nhưng có thể nó sẽ trừ sức khỏe nhanh hơn so với mong muốn. Các bài học sau cung cấp các cải tiến bổ sung để kiểm soát tốt hơn mức sức khỏe bị trừ từ người chơi.