Vallen die de gezondheid van spelers verlagen zijn een leuk gameplay-element dat kan worden gecodeerd met voorwaardelijke uitspraken. Oefen met het gebruik van voorwaardelijke uitspraken door een onderdeel te maken dat de gezondheid van de speler op nul zet wanneer het wordt aangeraakt.
Stel de val in
Vallen werken uitzonderlijk goed in spellen met op beweging gebaseerde uitdagingen, zoals obbies. Deze stappen beginnen met het instellen van de noodzakelijke variabelen en functies. Doe zoveel mogelijk zonder eerst naar de codeblokken te kijken.
Maak en noem een valonderdeel. Voeg een script toe aan het onderdeel.
Voeg in het script een beschrijvende opmerking toe en gebruik vervolgens een variabele om naar de ouder van het script te verwijzen.
-- Als een speler dit onderdeel aanraakt, zet hun gezondheid op 0local trapPart = script.ParentMaak een functie genaamd onTouch() met een parameter genaamd otherPart.
-- Als een speler dit onderdeel aanraakt, zet hun gezondheid op 0local trapPart = script.Parentlocal function onTouch(otherPart)endVerbind de functie met het Touched-evenement van het valonderdeel zodat het wordt uitgevoerd telkens wanneer iets het onderdeel aanraakt.
local trapPart = script.Parentlocal function onTouch(otherPart)endtrapPart.Touched:Connect(onTouch)
Controleer op aanraking door een speler
Vergeet niet dat de parameter otherPart registreert wat het valonderdeel aanraakt, wat een onderdeel van een speler kan zijn of gewoon de basisplaat.
Om ervoor te zorgen dat de val alleen spelers vernietigt en geen willekeurige decoritems, gebruik een if/then-verklaring om te controleren of wat er in otherPart zit een Humanoid-object bevat.
Zoek een specifiek object
De functie FindFirstChildWhichIsA() kan worden gebruikt om naar specifieke objecttypen te zoeken, wat handig is omdat we op zoek zijn naar een Humanoid-type object. Spelers zullen waarschijnlijk de val aanraken met slechts een deel van hun avatar, dus moet er een variabele worden ingesteld om de ouder van het aangeraakte onderdeel te vinden en deze te doorzoeken naar een Humanoid.
Typ in onTouch(), local character = otherPart.Parent.
local trapPart = script.Parentlocal function onTouch(otherPart)-- Vindt het ouderobject van otherPartlocal character = otherPart.ParentendtrapPart.Touched:Connect(onTouch)Controleer of character een Humanoid heeft door te typen:
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")endtrapPart.Touched:Connect(onTouch)
Controleer met een if-verklaring
Als er een Humanoid wordt gevonden, zet dan de Gezondheid van de Humanoid op nul.
Gebruik een if-verklaring om te controleren of er een Humanoid succesvol is toegewezen aan local humanoid.
local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- Evalueert of er een Humanoid is gevondenif humanoid thenendendtrapPart.Touched:Connect(onTouch)Voeg een printopdracht toe en controleer de code tot nu toe.
local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- Evalueert of er een Humanoid is gevondenif humanoid thenprint("Humanoid gevonden")endendtrapPart.Touched:Connect(onTouch)Voer de code uit en controleer of je de uitvoer kunt zien telkens wanneer een speler het onderdeel aanraakt.
Verander de gezondheid van de speler
Als de verklaring waar is, kun je dezelfde humanoid-variabele gebruiken om de gezondheid van de speler op 0 te zetten.
Typ tussen then en end, humanoid.Health = 0.
Voltooid scriptlocal trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- Evalueert of er een Humanoid is gevondenif humanoid thenprint("Humanoid gevonden")humanoid.Health = 0endendtrapPart.Touched:Connect(onTouch)Test de val.
Samenvatting
Dit valonderdeel gebruikte voorwaardelijke uitspraken om Humanoid-onderdelen te detecteren en de gezondheid van de Humanoid op nul te zetten. Dit script is een verbetering ten opzichte van het vorige val-script, dat elk aangeraakt object vernietigde, ongeacht wat het was.
Het heeft echter nog steeds een paar tekortkomingen. Humanoids zijn niet alleen in spelers aanwezig. Humanoids worden ook aangetroffen in niet-speelbare personages. Het script is ook alleen goed in het op nul zetten van de gezondheid van de speler. Je kunt experimenteren met het aftrekken van een klein bedrag aan gezondheid, maar het is waarschijnlijk dat het de gezondheid sneller aftrekt dan gewenst. Latere lessen bieden verdere verbeteringen om meer controle te geven over hoeveel gezondheid er van spelers wordt afgetrokken.