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.
Stwórz i nazwij część pułapki. Włóż skrypt do części.
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 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 uruchomić ją za każdym razem, gdy coś dotknie części.
local trapPart = script.Parentlocal function onTouch(otherPart)endtrapPart.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.
W onTouch() , wpisz local character = otherPart.Parent .
local trapPart = script.Parentlocal function onTouch(otherPart)-- Znajduje obiekt rodzicielski innej częścilocal character = otherPart.ParentendtrapPart.Touched:Connect(onTouch)Sprawdź, czy character ma Humanoid poprzez wpisanie:
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")endtrapPart.Touched:Connect(onTouch)
Sprawdź za pomocą oświadczenia if
Jeśli znaleziono humanoida, ustaw zdrowie humanoida na zero.
Użyj oświadczenia 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")-- Ocenia, czy znaleziono humanoidaif humanoid thenendendtrapPart.Touched:Connect(onTouch)Dodaj oświadczenie druku i sprawdź kod do tej pory.
local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- Ocenia, czy znaleziono humanoidaif humanoid thenprint("Found a Humanoid")endendtrapPart.Touched:Connect(onTouch)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.
Pomiędzy then a end, wprowadź humanoid.Health = 0.
Zakończony skryptlocal trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- Ocenia, czy znaleziono humanoidaif humanoid thenprint("Found a Humanoid")humanoid.Health = 0endendtrapPart.Touched:Connect(onTouch)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.