In Inleiding tot scripting heb je geleerd hoe je veranderingen in een spel in een loop over tijd kunt aanbrengen. Wat als je veranderingen wilt aanbrengen op basis van gebruikersgedrag? In deze tutorial leer je hoe je een dodelijke lavavloer maakt die gebruikers doodt wanneer ze erop staan.
Opzetten
Je hebt een plek in je wereld nodig om de dodelijke lava te plaatsen. Als je de Inleiding tot scripting cursus hebt gevolgd, zou de lavavloer mooi passen in de ruimte die wordt bedekt door de verdwijnende platforms.
Voeg een Part toe en verplaats deze naar de juiste plek in je wereld. Noem het LavaFloor.
Verander de grootte zodat het de vloer van de omringende ruimte bedekt.

Laat de vloer meer op lava lijken door de Material eigenschap in te stellen op Neon en de Color op een oranje tint.


Voeg een Script toe aan het LavaFloor onderdeel en hernoem het naar Kill.

Verwijder de standaardcode en maak een variabele voor de lava.
local lava = script.Parent
Verbinden met een gebeurtenis
Gebruik een gebeurtenis om te detecteren wanneer een gebruiker de lava aanraakt. Elk onderdeel heeft een Touched gebeurtenis die wordt geactiveerd wanneer iets het aanraakt. Je kunt verbinden met deze gebeurtenis om een functie uit te voeren wanneer deze wordt geactiveerd.
Declareer een nieuwe functie genaamd kill.
Toegang tot de Touched gebeurtenis op het lava-object met een punt, net als bij een eigenschap: lava.Touched.
Roep de Connect functie aan op de Touched gebeurtenis, waarbij je kill() doorgeeft als de functie die moet worden aangeroepen wanneer het onderdeel wordt aangeraakt.
local lava = script.Parentlocal function kill()endlava.Touched:Connect(kill)
Elke code die je in de kill functie schrijft, zal nu worden uitgevoerd telkens wanneer iets de lavavloer aanraakt. Merk op dat een dubbele punt wordt gebruikt voor de Connect functie, niet een punt - maak je op dit moment geen zorgen over waarom, onthoud gewoon het verschil.
Verkrijg het aangeraakte onderdeel
Om de gebruiker te doden, heeft de functie een object nodig dat aan die gebruiker is gekoppeld. De Touched gebeurtenis van een onderdeel kan het "andere onderdeel" dat het aanraakte bieden — maar alleen als je het opvraagt door het een parameter van de functie te maken.
Parameters zijn definities van wat een functie verwacht te ontvangen wanneer deze wordt aangeroepen. Een parameter kan in een functie worden gebruikt zoals elke andere variabele. Je kunt informatie aan een parameter doorgeven door deze in de haakjes op te nemen wanneer een functie wordt aangeroepen. Parameters worden gedefinieerd in de haakjes op de eerste regel van een functie. Maak een parameter genaamd otherPart voor de kill functie.
local lava = script.Parent
local function kill(otherPart)
end
lava.Touched:Connect(kill)Wanneer de kill functie wordt aangeroepen, zal de otherPart parameter het onderdeel vertegenwoordigen dat de lavavloer heeft aangeraakt, en de code die je in de functie schrijft, zal het kunnen gebruiken.
Character en humanoïde
Wanneer een gebruiker de lava aanraakt, kan Roblox het specifieke lichaamsdeel van de gebruiker detecteren dat het aanraakte, zoals het linkerbeen of de rechtervoet. Dit onderdeel bevindt zich in het Character model van de gebruiker, dat alle objecten bevat die de avatar van de gebruiker in het spel vormen, inclusief:
- De individuele lichaamsdelen van de gebruiker zoals het hoofd, ledematen en torso.
- Kleding en accessoires die door de gebruiker worden gedragen.
- De Humanoid, een speciaal object dat veel eigenschappen bevat die verband houden met de gebruiker, inclusief de gezondheid van de gebruiker.
- De HumanoidRootPart die de beweging van de gebruiker controleert.
Zoals eerder opgemerkt, is elk lichaamsdeel dat de lava aanraakt een onderdeel van het Character model, dus je kunt een referentie naar dat karakter krijgen met otherPart.Parent. Maak een variabele om de ouder van het onderdeel dat de lavavloer heeft aangeraakt op te slaan.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
end
lava.Touched:Connect(kill)Vanuit het karaktermodel moet je het Humanoid-object verkrijgen om de gebruiker te doden. Je kunt dit doen met de FindFirstChild() functie — geef gewoon de naam door van het ding dat je zoekt en het biedt het eerste overeenkomende kind dat het in dat object vindt. Roep FindFirstChild() aan op de partParent variabele met "Humanoid" als het kind dat je wilt vinden, en sla het resultaat op in een nieuwe variabele genaamd humanoid.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
end
lava.Touched:Connect(kill)Controleer de humanoïde
Je kunt eenvoudig controleren of de Humanoid is gevonden met een if-statement. De code in een if-statement wordt alleen uitgevoerd als de voorwaarde die in de eerste regel is gedefinieerd, waar is.
Er zijn verschillende operatoren die kunnen worden gebruikt om complexere voorwaarden op te bouwen die je in toekomstige cursussen zult tegenkomen - voor nu, zet gewoon de humanoid variabele daar. Maak een if-statement met humanoid als de voorwaarde.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
end
end
lava.Touched:Connect(kill)Stel de gezondheid van het karakter in
Nu de Humanoid is gecontroleerd, kunnen de eigenschappen worden gewijzigd. Als je de Health eigenschap op 0 instelt, sterft het bijbehorende Character. In de body van de if-statement, stel de Health eigenschap van humanoid in op 0.
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
lava.Touched:Connect(kill)Met dat is je lavavloer compleet! Test je spel en je zou moeten ontdekken dat je dodelijke lava gebruikers succesvol doodt bij contact. Probeer je lava te gebruiken als een extra uitdaging in een obby, of als een grens voor een wereld.
Eindcode
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
lava.Touched:Connect(kill)