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

De wereld bekijken

Standaard kijk je langs de negatieve z-as naar het midden van de room. Vaak wil je in 3D spellen veranderen hoe je naar de wereld kijkt. Bijvoorbeeld, in een first person shooter wil je waarschijnlijk hebben dat de camera van een positie een beetje boven de xy-oppervlakte over de xy-oppervlakte kijkt. In grafische termen stel je de correcte projectie in. Om de manier waarop je kijkt te veranderen bestaan de volgende twee functies.

d3d_set_projection(xvan, yvan, zvan, xnaar, ynaar, znaar, xomhoog, yomhoog, zomhoog) Definieert hoe in de wereld moet worden gekeken. Je specificeert het punt waar vanaf te kijken, het punt waarnaar te kijken en de omhoog vector.

Deze functie vereist enige uitleg. Om de projectie in te stellen heb je eerst de positie nodig waarvandaan je kijkt. Dit wordt aangegeven door de parameters (xvan,yvan,zvan). Daarna moet je de richting aangeven waarin je kijkt. Dit wordt gedaan door een tweede punt te geven om naar te kijken. Dit is het punt (xnaar,ynaar,znaar). Tenslotte kun je nog steeds de camera rondom de lijn van het gezichtspunt naar het kijkpunt draaien. Om dit te specificeren moeten we een omhoog vector, dat is de richting die omhoog is vanuit de camera. Dit is gegeven door de laatste drie parameters (xomhoog,yomhoog,zomhoog). Laat me een voorbeeld geven. Om langs de xy-oppervlakte te kijken, zoals in een first person shooter, kun je gebruiken

{
  d3d_set_projection(100,100,10,200,100,10,0,0,1);
}
Dus je kijkt vanuit punt (100,100) en 10 boven de oppervlakte in de richting van (200,100). De omhoog vector punten is de z-richting zoals verplicht. Om dit een beetje gecompliceerder te maken, stel je voor dat je een instantie in je room hebt die de positie van de camera specificeert. Het zal een huidige (x,y) positie hebben en een richting (en misschien zelfs een snelheid). Je kunt nu dit als je camera specificeren door de volgende code te gebruiken:

{
  with (obj_camera)
    d3d_set_projection(x,y,10,
               x+cos(direction*pi/180),y-sin(direction*pi/180),10,
               0,0,1);
}

Dit ziet er misschien een beetje ingewikkeld uit. We kijken vanaf de camerapositie (x,y), 10 boven de grond. Om een punt in de correcte richting vast te stellen moeten we een beetje meetkunde doen. Dit punt is aangegeven door de volgende drie parameters. Tenslotte gebruiken we bovenstaande omhoog vector.

Eén belangrijke opmerking! Zodra Game Maker een room begint te tekenen zal het gezichtspunt terugzetten naar de standaardpositie. Dus het eerste wat je moet doen bij het tekenen van de scène is de projectie die je wilt instellen. Dit moet worden gedaan in een Draw Event!

Er is ook een uitgebreide versie van de bovenstaande functie:

d3d_set_projection_ext(xvan, yvan, zvan, xnaar, ynaar, znaar, xomhoog, yomhoog, zomhoog, gezichtsveld, verhouding, zdichtbij, zverweg) Een uitgebreide versie van deze functie in welke je ook de breedte van het gezichtsveld, de verhouding tussen de horizontale en verticale zijde van de view, en de dichtbij en ver weg clipping planes.

De toegevoegde parameters werken als volgt. Als je de camerapositie specificeert, het punt om naar te kijken, en de omhoog vector, kun je nog steeds veranderen hoe breed de lens van de camera is. Dit wordt het gezichtsveld genoemd. Een redelijke waarde is 45 graden en dit is ook de standaardwaarde. Maar je kunt dit veranderen als je dat wilt. Vervolgens kun je de verhouding tussen de horizontale en verticale projectie specificeren. Normaal gesproken wil je dezelfde verhouding gebruiken als die van de room of view, bijv. 640/480. Tenslotte kun je de clipping planes aangeven. Objecten die dichterbij de camera zijn dan zdichtbij worden niet getekend. Hetzelfde voor objecten verder dan zverweg. Het kan belangrijk zijn om deze parameters op een redelijke waarde in te stellen omdat ze ook de precisie van de z-comparisons beïnvloeden. Als je range te groot maakt wordt de precisie slechter. Standaard gebruiken we 1 en 32000. zdichtbij moet groter zijn dan 0!

Soms heb je tijdelijk een normale orthografische projectie nodig zoals gebruikt als er geen 3D is. Of je wilt terugkeren naar de standaard perspectieven projectie. Hiervoor kun je de volgende functies gebruiken:

d3d_set_projection_ortho(x, y, b, h, draaiing) Stelt een normale orthografische projectie in het aangegeven gebied in de room, gedraaid over het aangegeven aantal graden.
d3d_set_projection_perspective(x, y, b, h, draaiing) Stelt een normale perspectieven projectie in het aangegeven gebied in de room, gedraaid over het aangegeven aantal graden.

Een standaardgebruik hiervan is het tekenen van een overlay om bijv. de score of andere aspecten weer te geven. Om dit te doen stellen we een orthografische projectie in. We moeten ook tijdelijk hidden surface removal uitschakelen omdat we willen dat de informatie onafhankelijk van de huidige dieptewaarde wordt getekend. Het volgende voorbeeld geeft weer hoe je een overlay met de score kunt creëren.

{
  draw_set_color(c_black);
  d3d_set_projection_ortho(0,0,room_width,room_height,0);
  d3d_set_hidden(false);
  draw_text(10,10,'Score: ' + string(score));
  d3d_set_hidden(true);
}

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