W Wprowadzeniu do skryptów nauczyłeś się, jak wprowadzać zmiany w doświadczeniu w pętli w czasie. Co jeśli chcesz wprowadzać zmiany na podstawie zachowania użytkownika? W tym samouczku nauczysz się, jak stworzyć śmiertelną podłogę lawową, która zabija użytkowników, gdy na nią wejdą.
Ustawienia
Potrzebujesz miejsca w swoim świecie, aby umieścić śmiertelną lawę. Jeśli śledziłeś kurs Wprowadzenie do skryptów, podłoga lawowa idealnie zmieści się w lukę zajętą przez znikające platformy.
Wstaw Part i przesuń go na miejsce w swoim świecie. Nazwij go LawaPodłoga.
Zmień jego rozmiar, aby pokrywał podłogę zamkniętej przestrzeni.

Spraw, aby podłoga wyglądała bardziej jak lawa, ustawiając właściwość Material na Neon i Color na pomarańczowy odcień.


Wstaw Skrypt do części LawaPodłoga i zmień jego nazwę na Zabij.

Usuń domyślny kod i utwórz zmienną dla lawy.
local lawa = script.Parent
Połącz z wydarzeniem
Użyj wydarzenia, aby wykryć, kiedy użytkownik dotknie lawy. Każda część ma wydarzenie Touched, które wyzwala się, gdy coś ją dotknie. Możesz połączyć się z tym wydarzeniem, aby uruchomić funkcję, gdy zostanie wyzwolone.
Zdeklaruj nową funkcję zwaną zabij.
Uzyskaj dostęp do wydarzenia Touched na obiekcie lawy za pomocą kropki, podobnie jak właściwości: lawa.Touched.
Wywołaj funkcję Connect na wydarzeniu Touched, przekazując zabij() jako funkcję do wywołania, gdy część zostanie dotknięta.
local lawa = script.Parentlocal function zabij()endlawa.Touched:Connect(zabij)
Każdy kod, który napiszesz w funkcji zabij, będzie teraz uruchamiany, gdy coś dotknie lawy. Zauważ, że do funkcji Connect używa się dwukropka, nie kropki - na razie nie martw się o to, po prostu zapamiętaj różnicę.
Uzyskaj dotykającą część
Aby zabić użytkownika, funkcja będzie potrzebować obiektu powiązanego z tym użytkownikiem. Wydarzenie Touched części może dostarczyć "drugą część", która ją dotknęła - ale tylko pod warunkiem, że zażądzasz tego, czyniąc to parametrem funkcji.
Parametry są definicjami tego, co funkcja oczekuje otrzymać, gdy jest wywoływana. Parametr można używać w funkcji tak samo jak każdą inną zmienną. Możesz przekazać informacje do parametru, umieszczając go w nawiasach podczas wywoływania funkcji. Parametry są definiowane w nawiasach w pierwszej linii funkcji. Utwórz parametr zwany innaCzesc dla funkcji zabij.
local lawa = script.Parent
local function zabij(innaCzesc)
end
lawa.Touched:Connect(zabij)
Gdy funkcja zabij jest wywoływana, parametr innaCzesc będzie reprezentować część, która dotknęła podłogi lawowej, a kod, który napiszesz w funkcji, będzie mógł go użyć.
Postać i humanoid
Gdy użytkownik dotknie lawy, Roblox może wykryć konkretną część ciała użytkownika, która ją dotknęła, na przykład lewą nogę czy prawą stopę. Ta część znajduje się w modelu Postać użytkownika, który zawiera wszystkie obiekty, które tworzą awatar użytkownika w doświadczeniu, w tym:
- Poszczególne części ciała użytkownika, takie jak głowa, kończyny i tułów.
- Jakiekolwiek ubrania i akcesoria noszone przez użytkownika.
- Humanoid, specjalny obiekt, który zawiera wiele właściwości związanych z użytkownikiem, w tym zdrowie użytkownika.
- HumanoidRootPart, który kontroluje ruch użytkownika.
Jak wcześniej wspomniano, każda część ciała, która dotknie lawy, jest częścią modelu Postaci, więc możesz uzyskać odniesienie do tej postaci za pomocą innaCzesc.Parent. Utwórz zmienną, aby przechować rodzica części, która dotknęła podłogi lawowej.
local lawa = script.Parent
local function zabij(innaCzesc)
local rodzicCzesci = innaCzesc.Parent
end
lawa.Touched:Connect(zabij)
Z modelu postaci będziesz musiał uzyskać obiekt Humanoid, aby zabić użytkownika. Możesz to zrobić za pomocą funkcji FindFirstChild() - wystarczy przekazać jej nazwę rzeczy, której szukasz, a zwróci pierwszego pasującego potomka, którego znajdzie w tym obiekcie. Wywołaj FindFirstChild() na zmiennej rodzicCzesci z "Humanoid" jako dzieckiem do znalezienia i przechowaj wynik w nowej zmiennej zwanej humanoid.
local lawa = script.Parent
local function zabij(innaCzesc)
local rodzicCzesci = innaCzesc.Parent
local humanoid = rodzicCzesci:FindFirstChild("Humanoid")
end
lawa.Touched:Connect(zabij)
Sprawdź humanoida
Możesz łatwo sprawdzić, czy Humanoid został znaleziony, używając instrukcji if. Kod w instrukcji if uruchomi się tylko wtedy, gdy warunek zdefiniowany w pierwszej linii jest prawdziwy.
Jest wiele operatorów, które można wykorzystać do budowy bardziej złożonych warunków, które napotkasz w przyszłych kursach - na razie po prostu umieść zmienną humanoid tam. Utwórz instrukcję if z humanoid jako warunkiem.
local lawa = script.Parent
local function zabij(innaCzesc)
local rodzicCzesci = innaCzesc.Parent
local humanoid = rodzicCzesci:FindFirstChild("Humanoid")
if humanoid then
end
end
lawa.Touched:Connect(zabij)
Ustaw zdrowie postaci
Teraz, gdy Humanoid został sprawdzony, jego właściwości mogą zostać zmienione. Jeśli ustawisz jego właściwość Health na 0, powiązana Postać umiera. W ciele instrukcji if ustaw właściwość Health humanoida na 0.
local function zabij(innaCzesc)
local rodzicCzesci = innaCzesc.Parent
local humanoid = rodzicCzesci:FindFirstChild("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
lawa.Touched:Connect(zabij)
Dzięki temu twoja podłoga lawowa jest gotowa! Przetestuj swoje doświadczenie, a powinieneś stwierdzić, że twoja śmiertelna lawa skutecznie zabija użytkowników przy kontakcie. Spróbuj użyć swojej lawy jako dodatkowe wyzwanie w obby, lub jako granicę dla świata.
Ostateczny kod
local lawa = script.Parent
local function zabij(innaCzesc)
local rodzicCzesci = innaCzesc.Parent
local humanoid = rodzicCzesci:FindFirstChild("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
lawa.Touched:Connect(zabij)