Các bẫy làm giảm sức khỏe của người chơi là một yếu tố thú vị trong trò chơi 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 mà làm giảm sức khỏe của người chơi xuống 0 khi chạm vào.
Thiết lập bẫy
Các bẫy hoạt động rất tốt trong các trò chơi có thử thách 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 nhiều nhất có thể 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 script vào phần đó.
Trong script, 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 script.
-- 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 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à mặt đất.
Để đảm bảo rằng bẫy chỉ tiêu diệt người chơi và không tiêu diệt các vật 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ì 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 kiếm các loại đối tượng cụ thể, điều này 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 của avatar 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ó cho 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ó một Humanoid 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 một 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 0.
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 hay không.
local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- Đánh giá xem một Humanoid có được tìm thấy khôngif humanoid thenendendtrapPart.Touched:Connect(onTouch)Thêm một câu lệnh print 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 một Humanoid có được tìm thấy 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.
Script hoàn thànhlocal trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- Đánh giá xem một Humanoid có được tìm thấy khôngif humanoid thenprint("Đã tìm thấy một Humanoid")humanoid.Health = 0endendtrapPart.Touched:Connect(onTouch)Kiểm tra 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 0. Script này là một cải tiến so với script 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 quan tâm đến nó là gì.
Tuy nhiên, nó vẫn có một vài lỗi. Humanoid không chỉ có trong người chơi. Humanoid cũng có trong các nhân vật không thể chơi được. Script này cũng chỉ tốt cho việc đặt sức khỏe của người chơi xuống 0. Bạn có thể thử nghiệm với việc trừ một lượng sức khỏe nhỏ, nhưng có thể nó sẽ trừ sức khỏe nhanh hơn mong muốn. Các bài học sau sẽ cung cấp thêm cải tiến để kiểm soát tốt hơn lượng sức khỏe bị trừ từ người chơi.