在 介紹腳本 中,您學習了如何在時間循環中對體驗進行更改。如果您想根據使用者行為進行變更,這個教學將教您如何製作致命的熔岩地板,當使用者踩到它時會殺死他們。
設定
你需要在世界上找到一個地方來放置致命的熔岩。如果您遵循了 介紹腳本 課程,熔岩地板將很好地適應消失的平台所覆蓋的空隙。
插入 Part 並將其移到你的世界中。命名為 LavaFloor 。
調整大小以覆蓋包圍空間的地板。
通過設置 Material 屬性為 Neon 和 Color 為橙色來讓地板看起來更像熔岩。
在 部分 中插入 LavaFloor 並將其重命名為 Kill 。
移除預設代碼並創建一個變量以用於熔岩。
local lava = script.Parent
連接到事件
使用 事件 來偵測用戶是否觸碰到熔岩。每個零件都有一個 Touched 事件,當有物體觸碰它時發生。您可以 連接 到此事件來在發射時執行函數。
宣言一個新的函數叫做 kill 。
使用點到達熔岩對象上的Touched,就像使用屬性一樣:lava.Touched。
在 Connect 事件上呼叫 Touched 函數,傳遞 kill() 作為部件被觸碰時呼叫的函數。
local lava = script.Parentlocal function kill()endlava.Touched:Connect(kill)
在 kill 函數中寫的任何代碼現在會在任何東西觸碰熔岩時運行。請注意, 欄位 用於Connect, 不是 點,不要擔心為什麼在這一點上,只需記住差異。
取得接觸部分
要殺死使用者,函數將需要與該使用者相關的對象。零件的 Touched 事件可以提供触碰它的 "其他零件" — 但只有如果您通過使其成為函數的 參數 來請求它。
參數是功能在呼叫時期望收到的定義。參數可以在函數中使用,與其他變量一樣。您可以在函數被呼叫時將資訊包含在括號中,將其傳送給參數。參數在函數的第一行上的括號中定義。創建一個 參數 稱為 otherPart 的 kill 函數。
local lava = script.Parent
local function kill(otherPart)
end
lava.Touched:Connect(kill)
當 kill 功能被呼叫時,otherPart 參數將代表觸碰熔岩地板的部分,你在函數中寫的代碼將能夠使用它。
角色和人形
當使用者觸碰熔岩時,Roblox 可偵測到使用者觸碰它的特定身體部位,例如左腿或右腳。這部分位於使用者的 角色 模型中,包含所有構成使用者虛擬人偶在體驗中的對象,包括:
- 使用者的個人身體部位,例如頭部、肢體和軀體。
- 使用者穿著的服裝和配件。
- The Humanoid , 一種特殊對象,包含與使用者相關的多個屬性,包括使用者的健康。
- 控制使用者行動的人形根部件。
如前所述,任何接觸熔岩的身體部位都屬於角色模型,因此您可以使用 otherPart.Parent 來獲得該角色的參考。創建變量來儲存熔岩地板被碰到的零件父親。
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
end
lava.Touched:Connect(kill)
從角色模型來看,你需要獲得人形對象才能殺死用戶。您可以使用 FindFirstChild() 函數來執行此操作—只需傳送您正在尋找的東西名稱,它將提供它在該對物件中找到的第一個匹配兒。呼叫 FindFirstChild() 在 partParent 變量上使用 "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 句簡單地檢查是否找到了人形。在 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 ,相關的角色死亡。在 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)