在 腳本入門 中,您學會了如何在遊戲中隨時間進行更改。如果您想根據用戶行為進行更改呢?在本教程中,您將學習如何製作一個致命的熔岩地板,當用戶踩上去時會殺死他們。
設置
您需要在您的世界中放置致命的熔岩。如果您遵循了 腳本入門 課程,熔岩地板將很好地填補消失平台所覆蓋的空隙。
插入一個 Part 並將其移動到您的世界中的適當位置。將其命名為 LavaFloor。
調整大小以覆蓋包圍空間的地板。

通過將 Material 屬性設置為 Neon 並將 Color 設置為橙色陰影,使地板看起來更像熔岩。


在 LavaFloor 部件中插入一個 Script 並將其重命名為 Kill。

刪除默認代碼並為熔岩創建一個變量。
local lava = script.Parent
連接到事件
使用 事件 來檢測用戶何時觸碰熔岩。每個部件都有一個 Touched 事件,當某物觸碰它時會觸發。您可以 連接 到此事件,以便在其觸發時運行一個函數。
聲明一個名為 kill 的新函數。
使用點來訪問熔岩對象上的 Touched 事件,就像屬性一樣:lava.Touched。
在 Touched 事件上調用 Connect 函數,將 kill() 作為觸碰部件時要調用的函數。
local lava = script.Parentlocal function kill()endlava.Touched:Connect(kill)
您在 kill 函數中編寫的任何代碼現在都會在某物觸碰熔岩時運行。請注意,Connect 函數使用的是 冒號,而不是點 - 此時不必擔心為什麼,只需記住這個區別。
獲取觸碰的部件
要殺死用戶,函數需要與該用戶相關聯的對象。部件的 Touched 事件可以提供觸碰它的“其他部件”——但只有在您通過將其設置為函數的 參數 來請求它時。
參數是函數在被調用時預期接收的定義。參數可以像任何其他變量一樣在函數中使用。您可以通過在調用函數時將其包含在括號中來將信息傳遞給參數。參數在函數的第一行的括號中定義。為 kill 函數創建一個名為 otherPart 的 參數。
local lava = script.Parent
local function kill(otherPart)
end
lava.Touched:Connect(kill)當調用 kill 函數時,otherPart 參數將表示觸碰熔岩地板的部件,您在函數中編寫的代碼將能夠使用它。
角色和人形
當用戶觸碰熔岩時,Roblox 可以檢測到觸碰它的用戶的具體身體部位,例如左腿或右腳。這個部件在用戶的 Character 模型中,該模型包含構成用戶在遊戲中化身的所有對象,包括:
- 用戶的各個身體部位,如頭部、四肢和軀幹。
- 用戶穿著的任何衣物和配飾。
- Humanoid,一個特殊對象,包含許多與用戶相關的屬性,包括用戶的健康。
- 控制用戶移動的 HumanoidRootPart。
如前所述,任何觸碰熔岩的身體部位都是 Character 模型的一部分,因此您可以使用 otherPart.Parent 獲取該角色的引用。創建一個變量來存儲觸碰熔岩地板的部件的父級。
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
end
lava.Touched:Connect(kill)從角色模型中,您需要獲取 Humanoid 對象以殺死用戶。您可以使用 FindFirstChild() 函數來做到這一點——只需將您要查找的對象的名稱傳遞給它,它會提供在該對象中找到的第一個匹配子項。對 partParent 變量調用 FindFirstChild(),以 "Humanoid" 作為要查找的子項,並將結果存儲在名為 humanoid 的新變量中。
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
end
lava.Touched:Connect(kill)檢查人形
您可以使用 if 語句輕鬆檢查是否找到了 Humanoid。if 語句中的代碼僅在第一行定義的條件為真時運行。
有各種 運算符 可用於構建更複雜的條件,您將在未來的課程中遇到 - 現在,只需將 humanoid 變量放在那裡。創建一個 if 語句,將 humanoid 作為條件。
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)設置角色健康
現在已檢查 Humanoid,可以更改其屬性。如果您將其 Health 屬性設置為 0,則相關的 Character 會死亡。在 if 語句的主體中,將 humanoid 的 Health 屬性設置為 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)這樣,您的熔岩地板就完成了!測試您的遊戲,您應該會發現致命的熔岩在接觸時成功殺死了用戶。嘗試將您的熔岩用作障礙賽中的額外挑戰,或作為世界的邊界。
最終代碼
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)