Trong Giới thiệu về lập trình, bạn đã học cách thực hiện các thay đổi trong một trò chơi theo chu kỳ theo thời gian. Vậy nếu bạn muốn thực hiện các thay đổi dựa trên hành vi của người dùng thì sao? Trong hướng dẫn này, bạn sẽ học cách tạo ra một sàn nham thạch chết người, giết chết người dùng khi họ bước lên nó.
Thiết lập
Bạn cần một vị trí trong thế giới của bạn để đặt nham thạch chết người. Nếu bạn đã theo dõi khóa học Giới thiệu về lập trình, sàn nham thạch sẽ vừa vặn trong khoảng trống được che phủ bởi các nền tảng biến mất.
Chèn một Part và di chuyển nó vào vị trí trong thế giới của bạn. Đặt tên là LavaFloor.
Thay đổi kích thước để nó che phủ sàn của không gian bao quanh.

Làm cho sàn trông giống như nham thạch hơn bằng cách đặt thuộc tính Material thành Neon và Color thành một sắc thái màu cam.


Chèn một Script vào phần LavaFloor và đổi tên thành Kill.

Xóa mã mặc định và tạo một biến cho nham thạch.
local lava = script.Parent
Kết nối với một sự kiện
Sử dụng một sự kiện để phát hiện khi một người dùng chạm vào nham thạch. Mỗi phần đều có một sự kiện Touched được kích hoạt khi có thứ gì đó chạm vào nó. Bạn có thể kết nối với sự kiện này để chạy một hàm khi nó được kích hoạt.
Khai báo một hàm mới có tên là kill.
Truy cập sự kiện Touched trên đối tượng nham thạch bằng cách sử dụng dấu chấm, giống như một thuộc tính: lava.Touched.
Gọi hàm Connect trên sự kiện Touched, truyền kill() làm hàm để gọi khi phần này được chạm vào.
local lava = script.Parentlocal function kill()endlava.Touched:Connect(kill)
Bất kỳ mã nào bạn viết trong hàm kill sẽ chạy mỗi khi có thứ gì đó chạm vào nham thạch. Lưu ý rằng một dấu hai chấm được sử dụng cho hàm Connect, không phải là dấu chấm - đừng lo lắng về lý do tại thời điểm này, chỉ cần nhớ sự khác biệt.
Lấy phần chạm vào
Để giết người dùng, hàm sẽ cần một đối tượng liên quan đến người dùng đó. Sự kiện Touched của một phần có thể cung cấp "phần khác" đã chạm vào nó — nhưng chỉ nếu bạn yêu cầu nó bằng cách làm cho nó trở thành một tham số của hàm.
Các tham số là định nghĩa về những gì một hàm mong đợi nhận được khi nó được gọi. Một tham số có thể được sử dụng trong một hàm giống như bất kỳ biến nào khác. Bạn có thể truyền thông tin cho một tham số bằng cách bao gồm nó trong dấu ngoặc đơn khi một hàm được gọi. Các tham số được định nghĩa trong dấu ngoặc đơn trên dòng đầu tiên của một hàm. Tạo một tham số có tên là otherPart cho hàm kill.
local lava = script.Parent
local function kill(otherPart)
end
lava.Touched:Connect(kill)Khi hàm kill được gọi, tham số otherPart sẽ đại diện cho phần đã chạm vào sàn nham thạch, và mã bạn sẽ viết trong hàm sẽ có thể sử dụng nó.
Nhân vật và humanoid
Khi một người dùng chạm vào nham thạch, Roblox có thể phát hiện phần cơ thể cụ thể của người dùng đã chạm vào, chẳng hạn như chân trái hoặc chân phải. Phần này nằm trong mô hình Character của người dùng, chứa tất cả các đối tượng tạo nên hình đại diện của người dùng trong trò chơi, bao gồm:
- Các phần cơ thể riêng lẻ của người dùng như đầu, chi và thân.
- Bất kỳ trang phục và phụ kiện nào mà người dùng đang mặc.
- Humanoid, một đối tượng đặc biệt chứa nhiều thuộc tính liên quan đến người dùng, bao gồm sức khỏe của người dùng.
- HumanoidRootPart điều khiển chuyển động của người dùng.
Như đã đề cập trước đó, bất kỳ phần cơ thể nào chạm vào nham thạch đều là một phần của mô hình Character, vì vậy bạn có thể lấy tham chiếu đến nhân vật đó bằng otherPart.Parent. Tạo một biến để lưu trữ cha của phần đã chạm vào sàn nham thạch.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
end
lava.Touched:Connect(kill)Từ mô hình nhân vật, bạn sẽ cần lấy đối tượng Humanoid để giết người dùng. Bạn có thể làm điều này bằng cách sử dụng hàm FindFirstChild() — chỉ cần truyền tên của thứ bạn đang tìm kiếm và nó sẽ cung cấp đứa trẻ đầu tiên phù hợp mà nó tìm thấy trong đối tượng đó. Gọi FindFirstChild() trên biến partParent với "Humanoid" là đứa trẻ cần tìm, và lưu kết quả vào một biến mới có tên là humanoid.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
end
lava.Touched:Connect(kill)Kiểm tra humanoid
Bạn có thể dễ dàng kiểm tra xem Humanoid có được tìm thấy hay không bằng cách sử dụng một câu lệnh if. Mã trong một câu lệnh if chỉ chạy nếu điều kiện được định nghĩa trong dòng đầu tiên là đúng.
Có nhiều toán tử có thể được sử dụng để xây dựng các điều kiện phức tạp hơn mà bạn sẽ gặp trong các khóa học sau - hiện tại, chỉ cần đặt biến humanoid ở đó. Tạo một câu lệnh if với humanoid là điều kiện.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
end
end
lava.Touched:Connect(kill)Đặt sức khỏe của nhân vật
Bây giờ mà Humanoid đã được kiểm tra, các thuộc tính của nó có thể được thay đổi. Nếu bạn đặt thuộc tính Health của nó thành 0, nhân vật liên quan sẽ chết. Trong thân của câu lệnh if, đặt thuộc tính Health của humanoid thành 0.
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
lava.Touched:Connect(kill)Với điều đó, sàn nham thạch của bạn đã hoàn thành! Hãy thử nghiệm trò chơi của bạn và bạn sẽ thấy rằng nham thạch chết người của bạn đã giết chết người dùng khi tiếp xúc. Hãy thử sử dụng nham thạch của bạn như một thử thách bổ sung trong một obby, hoặc như một ranh giới cho một thế giới.
Mã cuối cùng
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
lava.Touched:Connect(kill)