Home | Aanpassen | Blog | Extra's | Log In | Info
Handleiding | D&D iconen | GML Parser | Archief | Iso City
Gebruikersnaam: Wachtwoord:  
Over ons | Features | Directory | Banners | Contact

Het ontwerpen van spellen met Game Maker
Het ontwerpen van spellen met Game Maker

Meer over objecten

Wanneer je een object creëert in de advanced mode, kan je wat meer geavanceerde settings veranderen.

Depth

Ten eerste, kunt je de Depth (diepte) van de instanties van het object instellen. Wanneer de instanties op het scherm worden getekend worden zij getekend in volgorde van diepte. De instanties met de grootste diepte worden eerst getekend. De instanties met de kleinste diepte worden het laatst getekend. Wanneer de instanties dezelfde diepte hebben, worden zij getekend in de volgorde waarin zij werden gecreëerd. Als je wilt waarborgen dat een object bovenop ligt, moet je de andere een negatieve diepte geven. Als je ervoor wilt zorgen het onder andere instanties ligt, geef het dan een grote positieve diepte. Je kunt de diepte van een instantie tijdens het spel ook veranderen door gebruik te maken van de variable depth.

Persistent objects

Ten tweede, kun je er voor zorgen dat een object permanent aanwezig blijft. Een blijvend object zal blijven bestaan wanneer het zich van de ene room naar de volgende beweegt. Het verdwijnt slechts wanneer je het uitdrukkelijk vernietigt. Zo moet je het object in de eerste room zetten en dan zal het beschikbaar zijn in alle rooms. Dit is prettig wanneer je bijvoorbeeld een hoofdfiguur hebt die zich van room naar room beweegt. Het gebruiken van blijvende objecten is een krachtig mechanisme maar ook een die gemakkelijk tot fouten leidt.

Parents

Elk object kan een ouderobject hebben. Wanneer een object een ouder heeft, erft het het gedrag van de ouder. Anders gezegd, het object is een soort speciaal geval van het ouderobject. Bijvoorbeeld, als je 4 verschillende ballen hebt, genoemd ball1, ball2, ball3 en ball4, die zich alle hetzelfde gedragen maar verschillende sprites hebben, kun je ball1 tot de ouder van andere drie maken. Nu moet je slechts gebeurtenissen voor ball1 bepalen. Andere zullen de gebeurtenissen erven en zullen zich op precies dezelfde manier gedragen. Bovendien als je voor instanties van ball1 (de parent) acties opgeeft, worden die automatisch doorgegeven aan de andere (children). bijvoorbeeld, als je alle instanties van ball1 vernietigt zullen ook alle instanties van de andere ballen worden vernietigd. Dit bespaart heel wat werk.

Meestal zullen de objecten zich bijna hetzelfde moeten gedragen, maar er kunnen ook kleine verschillen optreden. Bijvoorbeeld, één monster kan zich op en neer kunnen bewegen en een ander van links naar rechts. Voor de rest hebben zij precies hetzelfde gedrag. In dit geval bijna zouden alle events dezelfde acties moeten hebben op één of twee na. Opnieuw kunnen wij één object tot de ouder van de andere maken. Maar in dit geval bepalen wij ook bepaalde events voor het kindobject. Deze events overrulen de ouderevents. Wanneer een event voor het kindobject acties bevat, worden deze uitgevoerd in plaats van de acties van de ouder. Als je ook de ouderevent wilt uitvoeren kan je de zogenaamde "geërfde" event oproepen door de de juiste actie te gebruiken.

In feite is het een goede gewoonte om in zo'n gevallen één basisobject te maken. Dit basisobject dient alle standaard gedrag te bezitten maar wordt echter nooit in het spel gebruikt. Alle in feite gebruikte objecten hebben dit basisobject als ouder. Ouderobjecten kunnen op hun beurt ook weer ouderobjecten bezitten, etc. (Maar je mag echter geen cyclische overerving gebruiken!) Op deze manier kun je een stamboom van overerving van objecten maken. Dit is erg nuttig om het spel gestructureerd te houden en je wordt dan ook aangespoord om dit mechanisme van overerving te leren gebruiken.

Er is ook een tweede gebruik van het ouderobject. Het erft ook het botsingsgedrag voor andere objecten. Laat me dit met een voorbeeld duidelijk maken. Veronderstel dat je vier verschillende vloerobjecten hebt. Wanneer een bal de vloer raakt moet het van richting veranderen. Dit moet in de botsingsgebeurtenis van de bal met de vloer worden bepaald. Omdat er vier verschillende vloeren zijn moet de code voor elk van de vier verschillende botsingsevents van de bal ingevuld worden. Maar wanneer je één vloer de ouder van andere drie maakt, hoef je slechts die ene botsingsevent met die ene te vloer bepalen. Door overerving zullen de andere botsingen dezelfde event uitvoeren. Dit scheelt een hoop kopieerwerk.

Zoals al eerder aangegeven zul je er rekening mee moeten houden dat als je een ouderobject gebruikt dat ook consequenties heeft voor de kindobjecten. Dat gebeurt bijvoorbeeld als je een actie wilt laten uitvoeren door instanties van een bepaald object. Maar het treedt ook op als je gebruik maakt van het with() statement in scriptcode (Zie verderop). Bovendien treedt het op als je gebruik maakt van functies zoals instance_position, instance_number, etc. Tenslotte werkt het ook als je verwijst naar variabelen in andere objecten. In bovengenoemd voorbeeld betekent dat als je invult ball1.speed = 10, dat ook geldt voor ball2, ball3 en ball4.

Masks

Wanneer twee instanties in botsing komen, treedt er een botsingsevent op. Om te bepalen of twee instanties elkaar raken worden sprites gebruikt. Dit is in de meeste gevallen prettig, maar soms wil je botsingen met instanties van een andere vorm. Bijvoorbeeld, als je een isometrisch spel maakt, hebben de objecten typisch een hoogte (om hen een 3D uiterlijk te geven). Maar voor botsingen wil je slechts de grondvorm van de sprite gebruiken. Dit kan worden bereikt door een afzonderlijke sprite te creëren die als botsingsmasker voor het object wordt gebruikt.

Informatie

De knop Show Information stelt je in staat om alle beschikbare informatie over een object weer te geven en te printen. Dit is vooral van belang om overzicht te houden over alle acties en events. Zeker bij complexe spellen kun je al snel dat overzicht verliezen.

Zoeken Zoeken


Alternatieve versies Alternatieve versies

Je kan de handleiding ook lezen op een lange pagina (± 1.5 mb)

Ook beschikbaar in: Engels Frans Duits

ZIP Download helpfile

Advertentie Advertentie

GameMaker Handleiding