Instance variablen
Instance variabelen laten je voor elk monster een eigen gezondheidswaarde opslaan. Een variabele is gewoon een waarde die kan veranderen (of variabel zijn ), en ze worden voor elke instantie van een object afzonderlijk opgeslagen, vandaar de naam instance variabele .
Laten we een health instance variabele maken voor ons monster. Klik op het monster in de project bar of de object bar. Je kunt ook terug naar de lay-out schakelen en een monster object selecteren. Dit zal de eigenschappen van het monster in de properties bar tonen. Klik Add / edit bij Edit variables .
Het dialoogvenster instance Variabeles verschijnt. Het lijkt op het Behaviors dialoogvenster dat we eerder zagen, maar in plaats daarvan kun je instance variabelen toevoegen en wijzigen voor het object. Klik op de groene Add knop om een nieuwe toe te voegen.
Type in het dialoogvenster dat verschijnt health als naam, laat Type als Number , en voor Initial value vul 5 in (zoals afgebeeld). Hierdoor begint elk monster op 5 gezondheid. Wanneer ze geraakt worden zullen we 1 van de gezondheid aftrekken, en wanneer de gezondheid 0 is zullen we het object vernietigen.
Als je klaar bent klik op OK. Merk op dat de variabele nu wordt weergegeven in het dialoogvenster instance variabeles en ook in de properties van het monster. (Je kunt beginwaarden snel veranderen in de properties bar, maar voor het toevoegen of verwijderen van variabelen moet je op de Add / Edit link klikken.)
Events (gebeurtenissen) veranderen
Ga terug naar de event pagina. Op dit moment vernietigen we monsters, zodra de kogel hen raakt. Laten we dat veranderen naar 1 aftrekken van zijn gezondheid.
Vind het event dat zegt: Kogel - on collision with Monster . We hebben eerder een "destroy monster" actie gemaakt. Laten we dat vervangen met "subtract 1 from health". Klik rechts op de "destroy monster" actie en klik Replace .
Hetzelfde dialoogvenster verschijnt alsof we een nieuwe actie invoegen, maar deze keer zal de actie die we geselecteerd hebben vervangen. Kies Monster -> Subtract from (in de Instance variabeles categorie) -> Instance variabele "health", en voer 1 voor Value . Klik Done . De actie moet nu als volgt worden weergegeven:
Als we nu op de monsters schieten verliezen ze 1 health en de kogel explodeert, maar we hebben geen gebeurtenis gemaakt om monsters te doden als hun gezondheid op nul staat. Voeg een event toe:
Conditie: Monster -> Compare instance variable -> Health, Less or equal, 0
Actie: Monster -> Spawn another object -> Explosion, layer 1
Actie: Monster -> Destroy
Waarom "less or equal 0" in plaats van "equals 0"? Stel dat we een krachtiger wapen hebben dat 2 zou aftrekken van health. Als je een monster neergeschiet, zou zijn gezondheid achtereenvolgens: 5 , 3 , 1 , - 1 , - 3 worden... Zie je dat op geen enkel moment de gezondheid precies nul was, dus het zou nooit sterven! Daarom is het een goede gewoonte om "less or equal" te gebruiken om te testen of de gezondheid op is.
Start het spel. Je moet nu de monsters vijf keer raken om ze te doden!
Bijhouden van de uitslag
Laten we een score maken, zodat de speler weet hoe goed ze het hebben gedaan. We hebben hiervoor nog een variabele nodig. Je zou kunnen denken "laten we de score als een instance variabele van de speler bijhouden". Dat is geen slecht eerste idee, maar vergeet niet de waarde is opgeslagen "in" het object. Als er geen instanties zijn, zijn er ook geen variabelen! Dus als we de speler vernietigen, kunnen we niet meer te vertellen wat zijn uitslag was, want die werd vernietigd met de speler.
In plaats daarvan kunnen we een global variabele gebruiken. Net als een instance variabele, kan een globale variabele (of gewoon "global") tekst of een getal opslaan. Elke variabele kan een getal of een enkel stuk tekst opslaan. Globale variabelen zijn ook beschikbaar voor het hele spel in alle layouts - handig mochten we andere niveaus toe voegen.
Rechts-klik in de ruimte aan de onderkant van het event sheet, en selecteer Add global variable.
Voer Score in als de naam. De andere velden zijn OK, het maakt een getal dat begint bij 0.
Nu verschijnt de globale variabele als regel in het event sheet. Het staat in dit ene event sheet, maar het is toegankelijk vanaf elk event blad in elke lay-out.
Opmerking: er zijn ook local variabelen die alleen kunnen worden geopend door een kleinere "scope" van gebeurtenissen, maar we hoeven ons daar nu geen zorgen over te maken.
Laten we de speler een punt geven voor het doden van een monster. In ons "Monster: health less or equal 0" event (wanneer een monster sterft), klik Add action , en selecteer System -> Add to (onder Global en local variabeles) -> Score , value 1 . Nu zou de event er zo uit moeten zien:
Nu heeft de speler een score, die met 1 toeneemt voor elk monster dat ze te doden - maar ze kunnen hun score niet zien! Dat Laten we aan de speler zien met een tekstobject.