Pułapki, które zmniejszają zdrowie graczy, to zabawny element rozgrywki, który można zakodować za pomocą instrukcji warunkowych. Ćwicz używanie instrukcji warunkowych, tworząc część, która ustawia zdrowie gracza na zero po dotknięciu.
Ustawienie pułapki
Pułapki działają wyjątkowo dobrze w doświadczeniach z wyzwaniami opartymi na ruchu, takimi jak obby. Kroki te rozpoczną się od ustawienia niezbędnych zmiennych i funkcji. Zrób tyle, ile możesz, nie patrząc najpierw na bloki kodu.
Stwórz i nazwij część pułapki. Wstaw skrypt do części.
W skrypcie dodaj opisowy komentarz, a następnie użyj zmiennej do odniesienia się do rodzica skryptu.
-- Jeśli gracz dotknie tej części, ustaw jego zdrowie na 0local trapPart = script.ParentStwórz funkcję o nazwie onTouch() z parametrem o nazwie otherPart.
-- Jeśli gracz dotknie tej części, ustaw jego zdrowie na 0local trapPart = script.Parentlocal function onTouch(otherPart)endPołącz funkcję z wydarzeniem Touched części pułapki, aby uruchamiała się zawsze, gdy coś dotknie tej części.
local trapPart = script.Parentlocal function onTouch(otherPart)endtrapPart.Touched:Connect(onTouch)
Sprawdzenie dotyku gracza
Pamiętaj, że parametr otherPart rejestruje to, co dotyka części pułapki, co może być częścią gracza lub po prostu podstawą.
Aby upewnić się, że pułapka zniszczy tylko graczy i nie zniszczy przypadkowych przedmiotów dekoracyjnych, użyj instrukcji if/then, aby sprawdzić, czy cokolwiek, co znajduje się w otherPart, zawiera obiekt Humanoid.
Znajdź konkretny obiekt
Funkcję FindFirstChildWhichIsA() można wykorzystać do poszukiwania konkretnych typów obiektów, co jest przydatne, ponieważ szukamy obiektu typu Humanoid. Gracze prawdopodobnie dotkną pułapki tylko częścią swojego awatara, dlatego musi być ustawiona zmienna, aby znaleźć rodzica dotykającej części i przeszukać go w poszukiwaniu Humanoida.
W onTouch(), wpisz local character = otherPart.Parent.
local trapPart = script.Parentlocal function onTouch(otherPart)-- Znajduje obiekt rodzicielski otherPartlocal character = otherPart.ParentendtrapPart.Touched:Connect(onTouch)Sprawdź, czy character ma Humanoid, wpisując:
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")endtrapPart.Touched:Connect(onTouch)
Sprawdzenie za pomocą instrukcji if
Jeśli Humanoid zostanie znaleziony, ustaw zdrowie Humanoida na zero.
Użyj instrukcji if, aby sprawdzić, czy Humanoid został pomyślnie przypisany do local humanoid.
local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- Ocena, czy Humanoid został znalezionyif humanoid thenendendtrapPart.Touched:Connect(onTouch)Dodaj polecenie print i sprawdź kod do tej pory.
local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- Ocena, czy Humanoid został znalezionyif humanoid thenprint("Znaleziono Humanoida")endendtrapPart.Touched:Connect(onTouch)Uruchom kod i sprawdź, czy widzisz wynik, gdy gracz dotknie części.
Zmiana zdrowia gracza
Jeśli warunek jest prawdziwy, możesz użyć tej samej zmiennej humanoid do ustawienia zdrowia gracza na 0.
Pomiędzy then a end wpisz humanoid.Health = 0.
Zakończony skryptlocal trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- Ocena, czy Humanoid został znalezionyif humanoid thenprint("Znaleziono Humanoida")humanoid.Health = 0endendtrapPart.Touched:Connect(onTouch)Przetestuj pułapkę.
Podsumowanie
Ta część pułapki użyła instrukcji warunkowych do wykrywania części Humanoid i ustawienia zdrowia Humanoida na zero. Ten skrypt jest ulepszeniem poprzedniego skryptu pułapki, który zniszczyłby każdy dotykający obiekt, niezależnie od tego, co to było.
Ma jednak nadal kilka wad. Humanoidy nie są tylko w graczach. Humanoidy znajdują się także w postaciach niegrywalnych. Skrypt jest również dobry tylko w ustawianiu zdrowia gracza na zero. Możesz eksperymentować z odejmowaniem małej ilości zdrowia, ale prawdopodobnie będzie to odejmować zdrowie szybciej, niż byś chciał. Późniejsze lekcje dostarczą dalszych ulepszeń, aby dać większą kontrolę nad tym, ile zdrowia odejmuje się graczom.