Jeśli/potem ćwicz z pułapkami

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Pułapki, które zmniejszają zdrowie graczy, są zabawnym elementem rozgrywki, który można kodować za pomocą oświadczeń warunkowych.Praktykuj używanie warunków, tworząc część, która ustawia zdrowie gracza na zero po dotknięciu.

Ustaw pułapkę

Pułapki działają wyjątkowo dobrze w doświadczeniach z wyzwaniami opartymi na ruchu, takimi jak obby.Te kroki rozpoczną się od ustawienia niezbędnych zmiennych i funkcji.Zrób jak najwięcej, bez najpierw patrzenia na pudełka kodu.

  1. Stwórz i nazwij część pułapki. Włóż skrypt do części.

  2. W skrypcie dodaj komentarz opisowy, a następnie użyj zmiennej, aby odwołać się do rodzica skryptu.


    -- Jeśli gracz dotknie tej części, ustaw jego zdrowie na 0
    local trapPart = script.Parent
  3. Stwórz funkcję o nazwie onTouch() z parametrem o nazwie otherPart.


    -- Jeśli gracz dotknie tej części, ustaw jego zdrowie na 0
    local trapPart = script.Parent
    local function onTouch(otherPart)
    end
  4. Połącz funkcję z wydarzeniem Touched części pułapki, aby uruchomić ją za każdym razem, gdy coś dotknie części.


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

Sprawdź dotknięcie gracza

Pamiętaj, że parametr otherPart rejestruje wszystko, co dotyka części pułapki, która może być częścią gracza lub po prostu płytą bazową.

Aby upewnić się, że pułapka zniszczy tylko graczy i nie zniszczy losowych przedmiotów dekoracyjnych, użyj oświadczenia if/then, aby sprawdzić, czy cokolwiek znajdujące się w otherPart zawiera obiekt Humanoidowy.

Znajdź konkretny obiekt

Funkcja FindFirstChildWhichIsA() może być użyta do wyszukiwania określonych typów obiektów, co jest wygodne, ponieważ szukamy obiektu typu Humanoid.Gracze prawdopodobnie dotkną pułapki tylko częścią swojego awatara, więc należy ustawić zmienną, aby znaleźć rodzica dotykającej części i poszukać go wśród humanoidów.

  1. W onTouch() , wpisz local character = otherPart.Parent .


    local trapPart = script.Parent
    local function onTouch(otherPart)
    -- Znajduje obiekt rodzicielski innej części
    local character = otherPart.Parent
    end
    trapPart.Touched:Connect(onTouch)
  2. Sprawdź, czy character ma Humanoid poprzez wpisanie:

    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)

Sprawdź za pomocą oświadczenia if

Jeśli znaleziono humanoida, ustaw zdrowie humanoida na zero.

  1. Użyj oświadczenia if, aby sprawdzić, czy Humanoid został pomyślnie przypisany do local humanoid.


    local trapPart = script.Parent
    local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    -- Ocenia, czy znaleziono humanoida
    if humanoid then
    end
    end
    trapPart.Touched:Connect(onTouch)
  2. Dodaj oświadczenie druku i sprawdź kod do tej pory.


    local trapPart = script.Parent
    local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    -- Ocenia, czy znaleziono humanoida
    if humanoid then
    print("Found a Humanoid")
    end
    end
    trapPart.Touched:Connect(onTouch)
  3. Wykonaj kod i sprawdź, czy możesz zobaczyć wynik za każdym razem, gdy gracz dotknie części.

Zmień zdrowie gracza

Jeśli stwierdzenie jest prawdą, możesz użyć tej samej zmiennej humanoida, aby ustawić zdrowie gracza na 0.

  1. Pomiędzy then a end, wprowadź humanoid.Health = 0.

    Zakończony skrypt

    local trapPart = script.Parent
    local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    -- Ocenia, czy znaleziono humanoida
    if humanoid then
    print("Found a Humanoid")
    humanoid.Health = 0
    end
    end
    trapPart.Touched:Connect(onTouch)
  2. Przetestuj pułapkę.

Podsumowanie

Ta część pułapki użyła warunków, aby wykryć części humanoidów i ustawić zdrowie humanoida na zero.Ten skrypt jest ulepszeniem poprzedniego skryptu pułapki, który niszczył każdy dotykany obiekt bez względu na to, co to było.

Ma jednak nadal kilka wad.Humanoidy nie są tylko w graczach.Humanoidy są również znalezione w niegrywalnych postaciach.Skrypt jest również tylko dobry w ustawianiu zdrowia gracza na zero.Możesz eksperymentować z odejmowaniem niewielkiej ilości zdrowia, ale prawdopodobnie odejmie zdrowie szybciej niż zakładano.Późniejsze lekcje zapewniają dalsze ulepszenia, aby zapewnić większą kontrolę nad tym, ile zdrowia jest odliczane od graczy.