在腳本入門中,您學會了如何在一段時間內循環地對體驗進行更改。如果您想根據用戶行為進行更改呢?在本教程中,您將學習如何製作一個致命的熔岩地板,當用戶踩上去時會殺死他們。
設置
您需要在您的世界中放置一個致命的熔岩。如果您按照腳本入門課程進行,熔岩地板將適合放在隱藏平台覆蓋的空隙中。
插入一個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可以檢測到觸及它的用戶的特定身體部位,例如左腿或右腳。這部分位於用戶的角色模型中,該模型包含在體驗中構成用戶虛擬形象的所有對象,包括:
- 用戶的各個身體部位,例如頭部、四肢和軀幹。
- 用戶所穿的任何衣物和配件。
- Humanoid,這是一個特殊對象,包含許多與用戶相關的屬性,包括用戶的生命值。
- 控制用戶運動的HumanoidRootPart。
如前所述,任何觸及熔岩的身體部位都是角色模型的一部分,因此您可以通過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。如果only if語句中的條件為真,則該語句中的代碼才會運行。
有各種運算符可用於構建更複雜的條件,您將在未來的課程中遇到——目前,僅將humanoid變量放在那裡。創建一條以humanoid作為條件的if語句。
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,則相應的角色將死亡。在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)
這樣,您的熔岩地板就完成了!測試您的體驗,您應該會發現您的致命熔岩在接觸時會成功殺死用戶。嘗試將您的熔岩用作obby中的額外挑戰,或作為世界的邊界。
最終代碼
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)