Koordinater, hvad er det?

Koordinater er noget, man sjældent kan slippe udenom i spiludvikling og heller ikke i GameMaker. Du kender dem måske allerede fra matematik og grafer, men GameMaker behandler dem en smule anderledes.

Et koordinat består af en samling af tal som udgør et punkt. På en almindelig graf eller i et 2D spil vil dette være to tal, og i et 3D spil vil det være tre tal. Tallene i et koordinat står for punktets placering på hver akse, som typisk betegnes X, Y og Z (hvoraf Z meget sjældent bruges i GameMaker), og altid i den rækkefølge.

  • X: Den horisontale placering, altså hvor langt til højre eller venstre punktet er. Ser man på en kasse, vil afstanden på X-aksen mellem to punkter udgøre kassens bredde.
  • Y: Den vertikale placering, altså hvor langt oppe eller nede punktet er. Ser man på en kasse, vil afstanden på Y-aksen mellem to punkter udgøre kassens højde.
  • Z: Hvor langt indad i skærmen / væk fra beskueren punktet er placeret. Ser man på en kasse, vil afstanden på Z-aksen mellem to punkter udgøre kassens dybde.

Betegnelser for akser og sider på en kasse

Der er lidt flere krøller i det hele, når man snakker 3D, og da GameMaker for det meste bliver brugt til 2D spil, vil jeg i store træk kun italesætte X og Y. Jeg vil dog slutte af med et afsnit om Z i forhold til tegnerækkefølgen.

I følgende vil jeg skrive koordinater sådan her: [7, 9]. Når jeg skriver koordinaterne sådan, betyder det at det første tal er X-værdien, og det andet tal er Y-værdien.

Koordinater i GameMaker

Når det kommer til koordinater i GameMaker, er koordinatsystemet lidt vendt på hovedet i forhold til koordinater fra for eksempel matematik. Bogstaveligt talt. Normalt tæller man X-værdier fra venstre mod højre og Y-værdier nedefra op (så [0, 10] vil ligge over [0, 5], for eksempel), men i GameMaker tæller man Y-værdierne oppefra ned (så [0, 10] vil ligge under [0, 5]).

Koordinatsystem med to akser

Det betyder rent praktisk, at hvis man gerne vil flytte en figur opad, skal man flytte den med negative værdier / minus tal, og hvis man gerne vil flytte en figur nedad, skal man flytte den med positive værdier / plus tal. På samme vis er det positive værdier for at flytte en figur mod højre, og negative værdier for at flytte værdier til venstre.

Origin-punktet og placering

Når man placerer et objekt med en sprite i et room i GameMaker, fylder det typisk lidt mere end ét punkt. Men objektet har stadig et koordinat, som udgør dets X- og Y-placering i rummet. Hvordan objektets sprite placeres, i forhold til dette koordinat, kommer an på den angivede sprites "origin".

Koordinatsystem med indsatte figurer på koordinater

Hvis man åbner en sprite i GameMaker, viser GameMaker et billede af den pågældende sprite, og henover det billede er der et lille sigtekorn (oppe i billedets øverste venstre hjørne, hvis ikke du har flyttet det). Dette er spritens origin, og er altså det punkt, der bestemmer placeringen af spriten i forhold til objektets koordinat - og det er det punkt, en sprite vil rotere sig omkring, hvis men drejer på den, samt gro ud fra hvis man gør den større. På nedenstående billede er origin-punktet nederst i midten.

Sprite med pile pegende på origin og menu

Oppe øverst til højre, når man redigerer en sprite, er en lille menu, hvor man nemt også kan vælge et origin-punkt, hvis man for eksempel gerne vil være helt sikker på, at det er præcis i midten. Ved siden af den menu, er der også felter hvor man kan skrive præcis, hvor man gerne vil have det.

Z i forhold til tegnerækkefølgen

Selvom Z-værdier ikke benyttes meget i 2D spil og GameMaker, så spiller det stadig en rolle i forhold til tegnerækkefølgen i GameMaker. Når man i sit room placerer sine objekter, baggrunde, etc., placerer man dem på "layers", og hvert layer har en "depth" tilknyttet sig, som på nogle måder er lagets Z-værdi, da disse styrer hvilke ting der bliver tegnet først (og dermed er "længst væk fra spilleren"), og hvilke ting der bliver tegnet sidst ("tættest på spilleren"). Hvis man har tegnet i tegneprogrammer som for eksempel Photoshop, fungerer det meget på samme måde som layers i sådanne programmer.

Skærmbillede af layer oversigt i GameMaker med rød pil der peger på depth feltet

Når det kommer til dybder, går værdierne fra det højeste tal som værende "længst væk fra spilleren" (og nederst på layer-listen), og det laveste tal "tættest på spilleren" (og øverst på layer-listen).

Der er selvfølgelig meget mere at vide om koordinater og hvordan de fungerer i GameMaker. At Y-værdierne er "på hovedet" har for eksempel en indvirken på nogen matematiske formularer, og foruden depth, er der også andre faktorer der spiller ind. Men forhåbentlig har mit skriv givet et godt fundament at bygge videre på, som kan få dig godt i gang (eller videre) med dit spil.

Mere i samme serie:

  1. Koordinater, hvad er det? (denne)
  2. "Collision Mask", hvad er det?

Published