減少玩家生命值的陷阱是一種有趣的遊戲元素,可以用條件語式寫碼。練習使用條件語式,創建一個部分,當玩家觸摸時將玩家的生命值設置為零。
設置陷阱
陷阱在隨機跑步挑戰、像障礙賽,很好運作。這些步驟將從設置必要變數和函數開始。不要先查看代碼盒子。
創建並命名一個陷阱零件。 將一個指令碼插入零件。
在指令碼中增加說明性評論,然後使用變數來參照指令碼的父父元素。
-- 如果玩家碰到這個部分,將他們的生命值設為 0local trapPart = script.Parent建立名為 onTouch() 的函數,並且在參數名為 otherPart 。
-- 如果玩家碰到這個部分,將他們的生命值設為 0local trapPart = script.Parentlocal function onTouch(otherPart)end連接函數到陷阱零件的 Touched 事件,讓它在某個零件被觸擊時執行。
local trapPart = script.Parentlocal function onTouch(otherPart)endtrapPart.Touched:Connect(onTouch)
檢查玩家是否觸摸
記住,參數 otherPart 記錄任何碰觸陷阱零件的地方,這可能是玩家的一個部分或只是底盤。
要確保陷阱只會摧毀玩家,而不會摧毀隨機裝飾物品,請使用 if/then 句子來檢查 otherPart 中是否包含人形物物件。
尋找特定對象
可以使用 FindFirstChildWhichIsA() 來尋找特定的物件類型,這很方便,因為我們正在尋找一個人形類型的物件。玩家可能只會碰到陷阱,因此必須設置一個變數來尋找觸摸零件的父親並搜尋它。
在 onTouch() 中,輸入 local character = otherPart.Parent。
local trapPart = script.Parentlocal function onTouch(otherPart)-- 尋找其他零件的父親對物件local character = otherPart.ParentendtrapPart.Touched:Connect(onTouch)檢查是否有 character 有 Humanoid 的狀態:
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")endtrapPart.Touched:Connect(onTouch)
使用 if 語句檢查
如果找到人形,則將人形的生命值設為零。
使用 if 語句檢查是否成功將 Humanoid 指定為 local humanoid。
local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- 評估是否找到人形if humanoid thenendendtrapPart.Touched:Connect(onTouch)添加打印說明,並檢查代碼。
local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- 評估是否找到人形if humanoid thenprint("Found a Humanoid")endendtrapPart.Touched:Connect(onTouch)執行 代碼,並確認您可以看到玩家每次觸摸零件時的輸出。
改變玩家的生命值
如果該聲明是真的,你可以使用相同的人形變量將玩家的健康設為 0。
在 then 和 end 之間,輸入 humanoid.Health = 0。
已完成的指令碼local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- 評估是否找到人形if humanoid thenprint("Found a Humanoid")humanoid.Health = 0endendtrapPart.Touched:Connect(onTouch)測試陷阱。
摘要
此陷阱零件使用條件來偵測人形零件並將人形的生命值設為零。這個指令是在以前的陷阱指令碼的基礎上進行的改良,摧毀了任何觸摸物品,無論是什麼。
然而,它仍然有一些缺點。人形怪物不是只有玩家。人形怪物也在非玩家角色中找到。腳本只能將玩家的健康設置為零。你可以試著從子減少一小部分的健康,但它可能會子減更快的速度。稍後的課題提供更多改進,以提供對玩家的更大控制。