Het ontwerpen van spellen met Game Maker
Control actions
Een zijn aantal acties waarmee je kunt controleren of andere acties worden uitgevoerd. De meeste van deze acties stellen een vraag, bijvoorbeeld of een positie leeg is. Wanneer het antwoord ja (true) is, wordt de volgende actie uitgevoerd; zo niet dan wordt deze overgeslagen. Wanneer je meerdere acties uitgevoerd wilt zien, dan wel overgeslagen afhankelijk van de uitkomst, dan kun je deze acties bij elkaar stoppen in een block door start block en end block acties rondom hen te zetten. Er kan ook een ander deel code zijn dat wordt uitgevoerd als een antwoord nee (false) is. Dus een vraag kan er als volgt uitzien:
In dit voorbeeld wordt de vraag gesteld of een positie voor de huidige instantie botsvrij is. Zo ja, dan start de instantie in een bepaalde richting. Zo niet, dan springt de instantie in een gegeven positie.
Voor alle vragen is er een veld, gelabeld NOT. Wanneer je dit veld aanvinkt, wordt het resultaat van de vraag omgedraaid. Dus wanneer het resultaat true was, wordt dit false en omgekeerd. Dit zorgt ervoor bepaalde acties te laten plaatsvinden, wanneer een vraag niet juist is.
Voor vele vragen kun je instellen dat zij worden toegepast op alle instanties van een bepaald object. In dit geval is het resultaat alleen maar waar als het geldt voor alle instanties van het object. Bijvoorbeeld, je kunt controleren of voor alle ballen de positie iets meer naar rechts collision vrij is.
De volgende questions en gerelateerde acties zijn beschikbaar: (Let erop dat zij allemaal een verschillend gevormd icoon hebben en een verschillende achtergrondkleur, waardoor zij gemakkelijker van andere acties kunnen worden onderscheiden.)
If a position is collision free
Deze vraag wordt met true beantwoord, wanneer de huidige instantie, geplaatst op de geïndiceerde positie geen collision genereert met een object. Je kunt de positie zowel absoluut als relatief genereren.
Je kunt ook aangeven of dit alles alleen geldt voor solide objecten of voor alle objecten. Deze actie wordt veelvuldig gebruikt om te controleren of een instantie naar een bepaalde positie kan verplaatsen.
If there is a collision at a position
Dit is het omgekeerde van de voorgaande actie. Het geeft de waarde true terug, wanneer er een botsing ontstaat als het huidige object naar een bepaalde gegeven positie wordt verplaatst (opnieuw of voor solide objecten of voor alle objecten)
If there is an object at a position
Deze vraag wordt met true beantwoord, wanneer een instantie die geplaatst is op de aangewezen positie een instantie van het aangewezen object ontmoet.
If the number of instances is a value
Je specificeert een object en een aantal. Wanneer het huidige aantal instanties van een object gelijk is aan dit aantal, levert de vraag de waarde true op. In het andere geval 'false'. Je kunt ook laten checken of het aantal instanties kleiner is dan een gegeven waarde of hoger. Dit wordt bijv. gebruikt om te laten checken of alle instanties van een bepaald type zijn verdwenen of niet. Meestal gebeurt dit op het moment dat een level van een spel eindigt.
With a change perform next action
You specify the number of sides of a dice which is then thrown. Then if the dice lands on one,
the result is true and the next action is performed. This can be used to put
an element of randomness in your game. For example, in each step you can
generate with a particular chance a bomb or a change of direction. The larger the
number of sides of the dice, the smaller the chance. You can actually use
real numbers. For example if you set the number of sides to 1.5 the next
action is performed two out of three times. Using a number smaller than 1 makes no sense.
If the user answers yes to a question
e specificeert een vraag. Een dialog wordt getoond aan de speler met een jaknop en een neeknop.
Het resultaat is 'true' wanneer de speler ja antwoordt.
If an expression is true
Dit is de meest algemene vraag actie. Je kunt een willekeurige expressie meegeven. Wanneer de expressie evalueert naar true (een getal groter of gelijk aan 0.5) wordt de volgende actie uitgevoerd. Hieronder vind je meer informatie hierover.
If a mouse button is pressed
Geeft de waarde 'true' terug, wanneer de aangegeven muisknop wordt ingedrukt. Een standaard gebruik is de step event. Je kunt checken of een muisknop is ingedrukt en wanneer dat het geval is, bijv. naar die positie gaan (gebruik de jump to point actie met waarden mouse_x en mouse_y)
If instance is aligned with grid
Geeft de waarde 'true' terug wanneer de positie van de instantie op het rooster ligt. Je specificeert de horizontale en verticale ligging op het rooster. Dit is goed te gebruiken wanneer bepaalde acties, bijv. een draai maken, alleen zijn toegestaan, wanneer de instantie op het rooster ligt.
Start of block
Geeft de start van een blok van acties aan.
End of block
Geeft het einde van een blok van acties aan.
Else
Achter het actiedeel volgt het else gedeelte, dat wordt uitgevoerd wanneer het resultaat van de vraag false is.
Repeat next action
Deze actie wordt gebruikt om de volgende actie te een aantal malen te herhalen (of een blok van acties) . Je kunt simpelweg het aantal keren meegeven.
Exit the current event
Bij deze actie wordt geen enkele verdere actie in deze event meer uitgevoerd. Dit wordt vaak gebruikt na een vraag. Bijvoorbeeld, wanneer een positie vrij is hoeft er niets gedaan te worden en beëindigen we de event. In dit voorbeeld worden de volgende acties alleen uitgevoerd, wanneer er een botsing optreedt.
Indien je meer controle wilt uitoefenen wat er allemaal in je spel gebeurt, kun je gebruik maken van de ingebouwde programmeertaal GML die beschreven wordt in deel 4 van deze documentetaie. Het geeft je meer flexibiliteit dan het gebruik van acties. Het gebruik van eigen variabelen kan ook van groot belang zijn bij het maken van een spel. De volgende acties hebben daar betrekking op.
Execute a piece of code
Wanneer deze actie optreedt, wordt een formulier zichtbaar, waarin code kan worden getypt. Dit kunnen simpele functies zijn of meer complexe code. Gebruik deze code actie alleen voor kleine stukjes code. Voor grotere stukken code kun je beter gebruik maken van scripts waarover in deel 2 van de documentatie veel meer staat.
Comment
Gebruik deze actie om een commentaarregel toe te voegen aan de actielijst. De zin wordt getoond in italic font. Het doet niets wanneer de event wordt uitgevoerd. Commentaar toevoegen helpt je te herinneren wat je events werkelijk doen. Realiseer je dat het gaat om een actie. Dus als het geplaatst is in een blok code warvoor geldt dat de uitkomst true is, dan zal deze actie worden uitgevoerd, ook al zie je er niets van en doet het niets.
Set the value of a variable
Er zijn veel ingebouwde variabelen in het spel. Met deze actie kun je deze ingebouwde variabelen veranderen. Je kunt ook eigen variabelen creëren en hen waarden toekennen. Je specificeert de naam van de variabele en de nieuwe waarde ervan. Wanneer je de Relative checkbox aanvinkt, wordt de waarde toegekend aan de huidige waarde van de variabele. Denk eraan dat dit alleen mogelijk is wanneer de variabele al een toegekende waarde heeft. Hieronder volgt meer informatie.
If a variable has a value
Met deze actie kun je controleren wat de waarde van een bepaalde variabele is. Als de waarde gelijk is aan de opgegeven waarde zal de vraag true als antwoord geven, in in het andere geval false. Je kunt ook controleren of een waarde groter of kleiner is dan een opgegeven waarde. Hieronder volgt nog meer informatie over variabelen. Je kunt overigens deze actie ook gebruiken om 2 expressie met elkaar te vergelijken.
Draw the value of a variable
Met deze actie kun je de waarde van een variabele op een door jou gewenste positie op het scherm weergeven. Houd er wel rekening mee dat deze actie alleen maar gebruikt kan worden in de draw event van een object.