如果/然後練習有陷阱

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

減少玩家生命值的陷阱是一種有趣的遊戲元素,可以用條件語式寫碼。練習使用條件語式,創建一個部分,當玩家觸摸時將玩家的生命值設置為零。

設置陷阱

陷阱在隨機跑步挑戰、像障礙賽,很好運作。這些步驟將從設置必要變數和函數開始。不要先查看代碼盒子。

  1. 創建並命名一個陷阱零件。 將一個指令碼插入零件。

  2. 在指令碼中增加說明性評論,然後使用變數來參照指令碼的父父元素。


    -- 如果玩家碰到這個部分,將他們的生命值設為 0
    local trapPart = script.Parent
  3. 建立名為 onTouch() 的函數,並且在參數名為 otherPart


    -- 如果玩家碰到這個部分,將他們的生命值設為 0
    local trapPart = script.Parent
    local function onTouch(otherPart)
    end
  4. 連接函數到陷阱零件的 Touched 事件,讓它在某個零件被觸擊時執行。


    local trapPart = script.Parent
    local function onTouch(otherPart)
    end
    trapPart.Touched:Connect(onTouch)

檢查玩家是否觸摸

記住,參數 otherPart 記錄任何碰觸陷阱零件的地方,這可能是玩家的一個部分或只是底盤。

要確保陷阱只會摧毀玩家,而不會摧毀隨機裝飾物品,請使用 if/then 句子來檢查 otherPart 中是否包含人形物物件。

尋找特定對象

可以使用 FindFirstChildWhichIsA() 來尋找特定的物件類型,這很方便,因為我們正在尋找一個人形類型的物件。玩家可能只會碰到陷阱,因此必須設置一個變數來尋找觸摸零件的父親並搜尋它。

  1. onTouch() 中,輸入 local character = otherPart.Parent


    local trapPart = script.Parent
    local function onTouch(otherPart)
    -- 尋找其他零件的父親對物件
    local character = otherPart.Parent
    end
    trapPart.Touched:Connect(onTouch)
  2. 檢查是否有 characterHumanoid 的狀態:

    local humanoid = character:FindFirstChildWhichIsA("Humanoid")


    local trapPart = script.Parent
    local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    end
    trapPart.Touched:Connect(onTouch)

使用 if 語句檢查

如果找到人形,則將人形的生命值設為零。

  1. 使用 if 語句檢查是否成功將 Humanoid 指定為 local humanoid


    local trapPart = script.Parent
    local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    -- 評估是否找到人形
    if humanoid then
    end
    end
    trapPart.Touched:Connect(onTouch)
  2. 添加打印說明,並檢查代碼。


    local trapPart = script.Parent
    local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    -- 評估是否找到人形
    if humanoid then
    print("Found a Humanoid")
    end
    end
    trapPart.Touched:Connect(onTouch)
  3. 執行 代碼,並確認您可以看到玩家每次觸摸零件時的輸出。

改變玩家的生命值

如果該聲明是真的,你可以使用相同的人形變量將玩家的健康設為 0。

  1. thenend 之間,輸入 humanoid.Health = 0

    已完成的指令碼

    local trapPart = script.Parent
    local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    -- 評估是否找到人形
    if humanoid then
    print("Found a Humanoid")
    humanoid.Health = 0
    end
    end
    trapPart.Touched:Connect(onTouch)
  2. 測試陷阱。

摘要

此陷阱零件使用條件來偵測人形零件並將人形的生命值設為零。這個指令是在以前的陷阱指令碼的基礎上進行的改良,摧毀了任何觸摸物品,無論是什麼。

然而,它仍然有一些缺點。人形怪物不是只有玩家。人形怪物也在非玩家角色中找到。腳本只能將玩家的健康設置為零。你可以試著從子減少一小部分的健康,但它可能會子減更快的速度。稍後的課題提供更多改進,以提供對玩家的更大控制。