game maker
Gebruikersnaam:
Wachtwoord:
Home Info Forums Help
Welkom, Gast. Alsjeblieft inloggen of registreren.
De activerings e-mail gemist?
+  Forums
|-+  Werken met Game Maker
| |-+  Tutorials en Uitbreidingen (Moderator: Maarten Baert)
| | |-+  [Tut] 3d Mouselook
Pagina's: [1] 2
« vorige volgende »
Print
Advertenties

Hedanito
Gebruiker


Offline Offline

Berichten: 758


« Gepost op: 19 April 2009, 13:56:04 »

Tutorial: 3d Mouselook
GM-versie:  Game Maker 7 en vast ook wel eerdere versies.
Registratie vereist: Ja
Niveau: Gevorderden

Inleiding:
Vaak komt de vraag hoe je nou precies een mouselook maakt. Aangezien er nog geen tutorial met goede uitleg over was heb ik er nu een gemaakt. Ik begin in deze tutorial met een first persion view, en daarna leg ik uit hoe je met wat simpele aanpassingen bijvoorbeeld een thirth person view kunt maken.

Wat je vooraf moet doen:
Voordat je begint moet je natuurlijk er eerst voor zorgen dat gamemaker op 3d staat ingesteld. Ook moet je een soort omgeving te maken zodat je kunt zien of je mouselook ook echt werkt. Dit zijn allemaal basisdingen in 3d en hier leg ik dus niets over uit. Weet je niet hoe het moet, begin dan niet aan deze tutorial en leer eerst meer over 3d in gamemaker.

Hoofdstuk 1: Kijken over de horizontale as.
Zoals ik net al vertelde beginnen we als eerst met een FPS mouselook.
Plaats met  GM069 een code in het draw event van het object dat de speler voorsteld, of maak een script aan en voer deze in het draw event van de speler uit.
Omdat het een mouselook is moeten we controleren of de speler de mouse naar links of naar rechts heeft bewogen. Daarvoor gebruiken we deze code:
GML:
xchange=window_mouse_get_x()-window_get_width()/2

In de variable xchange slaan we het verschil tussen de x van de mouse en het midden van het scherm op. Zo zien we of de speler de mouse bewogen heeft.
Maar deze code werkt natuurlijk nog niet helemaal, want als de mouse niet in het midden zou staan zou hij blijven draaien. Daarom moeten we helemaal aan het einde van het script de mouse weer in het midden van het scherm zetten. Dan ziet het er dus ongeveer zo uit:
GML:
xchange=window_mouse_get_x()-window_get_width()/2

//hier komt de rest van de mouselook

window_mouse_set(window_get_width()/2,window_get_height()/2)

De rest van de code die nu komt, komt dus tussen deze 2 regels in.
Nu we weten of de speler de muis beweegt en hoe ver, moeten we er natuurlijk wel wat mee doen. We moeten de richting van de speler aanpassen op basis van de xchange. Dat kan hiermee:
GML:
direction-=(xchange/10)

Ik heb hier xchange gedeeld door 10 omdat anders de mouselook veel te snel draait. Je kunt zelf ook een andere waarde invullen als je hem te snel of te langzaam vind draaien.

Nu moeten we berekenen vanaf welk punt hij naar welk ander punt kijkt. Hiervoor gebruiken we de variablen x1,y1,z1,x2,y2,z2. Omdat je vanuit de speler zelf kijk zijn de eerste x,y en z waarden gewoon de x,y en z waarden van de speler. De z wil je misschien wel wat hoger maken omdat als je voor de speler z=0 hebt ingevult het net lijkt of hij met zijn voeten kijkt. Dat doe ik hier niet, maar dat kun je dan zelf invullen.
GML:
x1=x
y1=y
z1=z

Nu gaan we gebruik maken van de sinus en de cosinus om de punten te berekenen waar hij naar kijkt. Omdat de sinus en de cosinus in gamemaker op radialen staan en we hier gebruik maken van graden, gebruiken we de functie degtorad() wat staat voor degree to radian.
GML:
x2=x+cos(degtorad(direction))

We gebruiken hier cos omdat er bij 0 graden 1 uitkomt, bij 90 en 270 graden 0 en bij 180 graden -1.
GML:
y2=y-sin(degtorad(direction))

Hier gebruiken we sin omdat er hier juist bij 0 en 180 graden 0 uit komt, bij 90 1 en bij 270 -1. Omdat er bij 90 juist -1 uit moet komen doen we de y min de sin van de richting in plaats van plus.

Omdat we hier nog alleen met de horizontale mouselook bezig zijn, is z2 hetzelfde als z1. Dan komen we dus uiteindelijk hier op uit:
GML:
x1=x
y1=y
z1=z
x2=x+cos(degtorad(direction))
y2=y-sin(degtorad(direction))
z2=z

En dan nu de laatste stap. Nu moeten we er een projectie van maken. We willen dat hij van x1,y1,x1 naar x2,y2,z2 kijkt, dus gebruiken we deze code:
GML:
d3d_set_projection(x1,y1,z1,x2,y2,z2,0,0,1)

De eerste 3 argumenten zijn het punt van waaruit je kijkt en de volgende 3 het punt waar je naartoe kijkt. De laatste 3 geven aan wat boven is, in dit gevan is z gewoon boven dus vullen we 0,0,1 in.

En nu is de horizontale mouselook af. Dit is de gehele code die je zou moeten hebben.

GML:
xchange=window_mouse_get_x()-window_get_width()/2

direction-=(xchange/10)

x1=x
y1=y
z1=z
x2=x+cos(degtorad(direction))
y2=y-sin(degtorad(direction))
z2=z

d3d_set_projection(x1,y1,z1,x2,y2,z2,0,0,1)

window_mouse_set(window_get_width()/2,window_get_height()/2)


Hoofdstuk 2: Kijken over de verticale as.
Nu hebben we dan wel en horizontale mouselook, maar je wilt natuurlijk ook naar boven en beneden kunnen kijken. Het gaat er ten slotte ook om in 3d dat je nu ook een verschil in hoogte hebt.

Wat je nu moet doen is in het create event een variable maken voor de verticale richting. Deze noemen we zdirection:
GML:
zdirection=180

Ik heb hier gekozen voor de waarde 180 omdat als je 0 neemt je van 90 naar 0 en dan naar 270 zou gaan wat heel vervelend rekent.

Nu we de zdirection hebben, moeten we kijken of de speler de muis naar boven of naar beneden beweegt. Dit werkt bijna hetzelfde als xchange:
GML:
ychange=window_mouse_get_y()-window_get_height()/2

De zdirection aanpassen zal wat minder makkelijk gaan dan bij de direction, omdat je niet 360 graden rond kunt draaien, maar slechts 180. Van recht naar boven tot recht naar beneden. We moeten dus eerst controleren of de zdirection met de ychange te ver zal gaan:
GML:
if zdirection+(ychange/10) <=90 or zdirection+(ychange/10) >=270{

Hier ook weer ychange/10 omdat het anders veel te snel zou draaien. We kijken hier of de zdirection te groot of te klein zou zijn als we de ychange er bij op zouden tellen. Als dat het geval is moeten we hem op de maximale of minimale waarde zetten:
GML:
    if zdirection<180{
        zdirection=90.01}
    if zdirection>180{
        zdirection=269.99}}

De reden dat ik ze hier niet op 90 en 270 zet maar net ervoor zal ik zometeen uitleggen. Deze code word alleen uitgevoerd als de speler te ver draait, maar de speler meot natuurlijk ook normaal kunnen draaien. Daarom gebruiken we dit script met de else statement:
GML:
else{
    zdirection+=(ychange/10)}

Als de speler dus niet te ver draait zal hij net zo draaien als gebeurd bij de horizontale direction. Dit is dus de uiteindelijke code:
GML:
if zdirection+(ychange/10) <=90 or zdirection+(ychange/10) >=270{
    if zdirection<180{
        zdirection=90.01}
    if zdirection>180{
        zdirection=269.99}}
else{
    zdirection+=(ychange/10)}

Net hebben we z2 gelijk gemaakt aan z1 zodat je altijd rechtdoor kijkt. Maar nu we een zdirection hebben kunnen we ook uitrekenen wat z2 moet zijn. De nieuwe code word dus dit:
GML:
z2=z+sin(degtorad(zdirection))

Je code zou er nu zo uit moeten zien:
GML:
xchange=window_mouse_get_x()-window_get_width()/2
ychange=window_mouse_get_y()-window_get_height()/2

direction-=(xchange/10)
if zdirection+(ychange/10) <=90 or zdirection+(ychange/10) >=270{
    if zdirection<180{
        zdirection=90.01}
    if zdirection>180{
        zdirection=269.99}}
else{
    zdirection+=(ychange/10)}

x1=x
y1=y
z1=z
x2=x+cos(degtorad(direction))
y2=y-sin(degtorad(direction))
z2=z+sin(degtorad(zdirection))

d3d_set_projection(x1,y1,z1,x2,y2,z2,0,0,1)

window_mouse_set(window_get_width()/2,window_get_height()/2)

Nu heb je als het goed is al een aardig werkende mouselook. Maar de mensen die goed op zitten te letten zullen merken dan je niet recht omhoog of recht naar beneden kunt kijken. Dit komt omdat x2 en y2 zich niet aanpassen aan de hoogte, want als je richt omhoog kijkt zouden x2 en y2 hetzelde moeten zijn al x1 en y1. Daarom doen we dit:
GML:
x2=x+cos(degtorad(direction))*abs(cos(degtorad(zdirection)))
y2=y-sin(degtorad(direction))*abs(cos(degtorad(zdirection)))

Hier gebruiken we abs() omdat de cos van zdirection hier altijd positief moet zijn terwijl hij negatief is tussen 90 en 180 graden. Dit stukje code is ook de reden waarom we 90.01 en 269.99 als uiterlijke waarden gebruikten, omdat de projection anders niet werkt doordat je van x naar x kijkt en van y naar y wat niet werkt als je z als boven hebt ingesteld. Je kunt het zelf ook uitproberen, je zult zien dat bij 90 en 270 je geen projectie meer hebt.

En dan is nu je FPS mouselook klaar. Je code zou er ongeveer als volgt uit moeten zien:

GML:
xchange=window_mouse_get_x()-window_get_width()/2
ychange=window_mouse_get_y()-window_get_height()/2

direction-=(xchange/10)
if zdirection+(ychange/10) <=90 or zdirection+(ychange/10) >=270{
    if zdirection<180{
        zdirection=90.01}
    if zdirection>180{
        zdirection=269.99}}
else{
    zdirection+=(ychange/10)}

x1=x
y1=y
z1=z
x2=x+cos(degtorad(direction))*abs(cos(degtorad(zdirection)))
y2=y-sin(degtorad(direction))*abs(cos(degtorad(zdirection)))
z2=z+sin(degtorad(zdirection))

d3d_set_projection(x1,y1,z1,x2,y2,z2,0,0,1)

window_mouse_set(window_get_width()/2,window_get_height()/2)

Wil je geen FPS view maar bijvoorbeeld een 3rd person view? Ga dan naar een van de volgende hoofstukken waarin ik uitleg hoe je de mouselook aanpast naar de view die jij wilt.


Hoofdstuk 3: 3rd person view.
3rd person view houd in dat je om de personage heen kunt kijken. Dat kan al met een paar kleine aanpassingen van ons vorige script.

Eerst maken we de variable zoom aan in het create event van de speler, zodat je kunt bepalen vanaf hoever je naar de speler kijkt. Hoe ver dat is moet je zelf bepalen. Je kunt er ook voor zorgen dat de speler zelf de afstand kan bepalen met bijvoorbeeld de mouse scroll events. In deze tutorial neem ik in ieder geval aan dat de zoom kan veranderen.

Nu moeten we dit stukje code aanpassen:

GML:
x1=x
y1=y
z1=z+20
x2=x+cos(degtorad(direction))*abs(cos(degtorad(zdirection)))
y2=y-sin(degtorad(direction))*abs(cos(degtorad(zdirection)))
z2=z+sin(degtorad(zdirection))+20

Omdat we naar x,y,z toe kijken in plaats van eraf, moeten we alles gewoon precies omdraaien:

GML:
x1=x-(cos(degtorad(direction))*abs(cos(degtorad(zdirection))))*zoom
y1=y+(sin(degtorad(direction))*abs(cos(degtorad(zdirection))))*zoom
z1=z-sin(degtorad(zdirection))*zoom+20
x2=x
y2=y
z2=z+20

Hierin is ook al zoom verwerkt, zodat je de afstand kunt bepalen. Maar nu kun je wel een probleem krijgen, namelijk als zoom 0 is, want dan kijkt hij van x,y,z naar x,y,z en heb je dus geen projectie. Daarom gebruiken we een combinatie van de twee:

GML:
if zoom=0{
    x1=x
    y1=y
    z1=z+20
    x2=x+cos(degtorad(direction))*abs(cos(degtorad(zdirection)))
    y2=y-sin(degtorad(direction))*abs(cos(degtorad(zdirection)))
    z2=z+sin(degtorad(zdirection))+20}
else{
    x1=x-(cos(degtorad(direction))*abs(cos(degtorad(zdirection))))*zoom
    y1=y+(sin(degtorad(direction))*abs(cos(degtorad(zdirection))))*zoom
    z1=z-sin(degtorad(zdirection))*zoom+20
    x2=x
    y2=y
    z2=z+20}

Als de zoom nu 0 word gaat hij vanzelf naar een first person view. Uiteindelijk kom je dan op zoiets:

GML:
xchange=window_mouse_get_x()-window_get_width()/2
ychange=window_mouse_get_y()-window_get_height()/2

direction-=(xchange/10)
if zdirection+(ychange/10) <=90 or zdirection+(ychange/10) >=270{
    if zdirection<180{
        zdirection=90.01}
    if zdirection>180{
        zdirection=269.99}}
else{
    zdirection+=(ychange/10)}

if zoom=0{
    x1=x
    y1=y
    z1=z+20
    x2=x+cos(degtorad(direction))*abs(cos(degtorad(zdirection)))
    y2=y-sin(degtorad(direction))*abs(cos(degtorad(zdirection)))
    z2=z+sin(degtorad(zdirection))+20}
else{
    x1=x-(cos(degtorad(direction))*abs(cos(degtorad(zdirection))))*zoom
    y1=y+(sin(degtorad(direction))*abs(cos(degtorad(zdirection))))*zoom
    z1=z-sin(degtorad(zdirection))*zoom+20
    x2=x
    y2=y
    z2=z+20}

d3d_set_projection(x1,y1,z1,x2,y2,z2,0,0,1)

window_mouse_set(window_get_width()/2,window_get_height()/2)

En nu is je 3rd person view af Blij.


Hoofdstuk 4: MMO view
Ik noem het hier MMO view maar ik weet niet de exacte naam ervoor. Het lijk heel erg op de 3rd person view met als verschil dat je om de speler kunt kijken zonder dat de richting veranderd en dat de muis niet steeds in het midden hoeft te staan. In deze leg ik uit hoe je er voor zorgt dat je met de linkermuisknop de view kunt draaien zonder de richting van de speler te veranderen en je met de rechtermuisknop de view kunt draaien waardoor de richting van de speler wel veranderd.

Eerst moeten er een aantal nieuwe variablen worden aangemaakt. Omdat de muis niet standaard in het midden staat moeten we een variable aanmaken die bijhoud op welk punt de speler heeft geklikt. Deze noem ik hier xx en yy. Daarnaast moet er een variable gemaakt worden die de richting van de view bijhoud, aangezien we om de speler heen willen kunnen draaien zonder dat de richting van de speler veranders. Deze variable noem ik hier hdirection en geef ik in het create event dezelfde waarde als direction.

Nu moeten we er eerst voor zorgen datde xchange en ychange goed gemeten worden. We nemen dus deze 2 stukjes code:

GML:
xchange=window_mouse_get_x()-window_get_width()/2
ychange=window_mouse_get_y()-window_get_height()/2
GML:
window_mouse_set(window_get_width()/2,window_get_height()/2)

En we gooien ze weg ^^

Nu moeten we er eerst voor zorgen dat xchange en ychange altijd een waarde van 0 hebben als de speler geen muisknoppen indrukt en zijn muis beweegt, ander gaat hij vanzelf rondjes draaien. Dus doen we heel simpel dit:

GML:
xchange=0
ychange=0

Eerst kijken we of de speler op een muisknop  indruk. Hier moeten we namelijk een beginwaarde zetten van de muis zodat we het verschil kunnen meten:

GML:
if mouse_check_button_pressed(mb_left) or mouse_check_button_pressed(mb_right){
    xx=window_mouse_get_x()
    yy=window_mouse_get_y()}

Daarna moeten we kijken of de speler de een muisknop ingedrukt houd.

GML:
if mouse_check_button(mb_left) or mouse_check_button(mb_right){

Dan kijken we naar het verschil tussen xx,yy en window_mouse_get_x(),window_mouse_get_y() en slaan dat op in de variable xchange:

GML:
    xchange=window_mouse_get_x()-xx
    ychange=window_mouse_get_y()-yy

En tot slotte zetten we de muis weer op zijn beginpunt. Dat doen we nu bij de xchange en ychange omdat het alleen mag gebeuren als de speler een muisknop indrukt:

GML:
    window_mouse_set(xx,yy)}

En dus komen we hierop uit:

GML:
if mouse_check_button_pressed(mb_left) or mouse_check_button_pressed(mb_right){
    xx=window_mouse_get_x()
    yy=window_mouse_get_y()}

if mouse_check_button(mb_left) or mouse_check_button(mb_right){
    xchange=window_mouse_get_x()-xx
    ychange=window_mouse_get_y() -yy
    window_mouse_set(xx,yy)}

De rest van de code is vrijwel hetzelfde als de 3rd person view, alleen vervangen we direction door hdirection. Dit doe ik niet met zdirection aangezien in de meeste gevallen de speler niet kantelt als je de zdirection aanpast. Gebeurt dit wel in jouw spel dan kun je gewoon hetzelfde doen als we nu met direction doen, en het dus vervangen met bijv vdirection. Ik maak hier geen voorbeeld code voor, omdat het nogal voorzich spreekt en dus alleen maar een hoop ruimte zou verbruiken.

Nu kun je al om de speler heen draaien, maar we wilden dat de speler ook meedraaide als je het met de rechtermuisknop deed. Daarom doen we dit:

GML:
if mouse_check_button(mb_right){
    direction=hdirection}

Als de speller de rechtermuisknop gebruikt zijn richting hetzelfde zijn als die van de view. Vandaar dat direction hier dezelfde waarde krijgt als hdirection.

En dan is dit dus je uiteindelijke code:

GML:
if mouse_check_button_pressed(mb_left) or mouse_check_button_pressed(mb_right){
    xx=window_mouse_get_x()
    yy=window_mouse_get_y()}

if mouse_check_button(mb_left) or mouse_check_button(mb_right){
    xchange=window_mouse_get_x()-xx
    ychange=window_mouse_get_y()-yy
    window_mouse_set(xx,yy)}

hdirection-=(xchange/10)
if zdirection+(ychange/10)<=90 or zdirection+(ychange/10)>=270{
    if zdirection<180{
        zdirection=90.01}
    if zdirection>180{
        zdirection=269.99}}
else{
    zdirection+=(ychange/10)}

if zoom=0{
    x1=x
    y1=y
    z1=z+20
    x2=x+cos(degtorad(hdirection))*abs(cos(degtorad(zdirection)))
    y2=y-sin(degtorad(hdirection))*abs(cos(degtorad(zdirection)))
    z2=z+sin(degtorad(zdirection))+20}
else{
    x1=x-(cos(degtorad(hdirection))*abs(cos(degtorad(zdirection))))*zoom
    y1=y+(sin(degtorad(hdirection))*abs(cos(degtorad(zdirection))))*zoom
    z1=z-sin(degtorad(zdirection))*zoom+20
    x2=x
    y2=y
    z2=z+20}

d3d_set_projection(x1,y1,z1,x2,y2,z2,0,0,1)

if mouse_check_button(mb_right){
    direction=hdirection}

En nu is je MMO view klaar Blij



Wil jij een view die hier niet staat genoemd? Reageer dan en ik zal kijken of het handig is om deze aan de tutorial toe te voegen.

« Laatste verandering: 15 Mei 2009, 22:20:34 door Hedanito »

Naar boven Gelogd

wargod1997
Gebruiker

Offline Offline

Berichten: 24


« Antwoord #1 Gepost op: 20 April 2009, 19:20:57 »

kan er misch ook een example bij ik krijg zo'n error:

ERROR in
action number 2
of Create Event
for object obj_speler:

Error in code at line 15:
   z1=z

at position 5: Unknown variable z


Wargod1997
Naar boven Gelogd

tidob1
Gebruiker


Offline Offline

Berichten: 2610


« Antwoord #2 Gepost op: 20 April 2009, 19:52:11 »

1 vraagje, waarom gebruik je niet gewoon
GML:
lengthdir_x(len,dir)
lengthdir_y(len,dir)
In plaats van
GML:
len*cos(dir)
len*-sin(dir)

Naar boven Gelogd

Mohammed-f
Gebruiker

Offline Offline

Berichten: 2402


« Antwoord #3 Gepost op: 20 April 2009, 21:10:45 »

GML:
window_mouse_set(window_get_width()/2,window_get_height()/2)

Kom op zeg, ik weet zeker dat het ook zonder deze code kan.

Waarom gebruikt iedereen precies dezelfde mouselook met deze code? Als ik dan tijdens het spel effe snel iets moet opzoeken, doe ik ALT TAB, en dan beweegt mijn muis niet meer. Dan moet ik het hele spel afsluiten om mijn muis te gebruiken.

Het is heel goed mogelijk een mouselook te maken zonder deze spel-irritatie. Ik heb op mijn laptop deze script nog waarmee je je muis nog wel kan bewegen, zonder dat je muis heletijd naar (100,100) of (window_get_width()/2,window_get_height()/2) gaat.


Naar boven Gelogd

Hedanito
Gebruiker


Offline Offline

Berichten: 758


« Antwoord #4 Gepost op: 20 April 2009, 21:25:48 »

kan er misch ook een example bij ik krijg zo'n error:

ERROR in
action number 2
of Create Event
for object obj_speler:

Error in code at line 15:
   z1=z

at position 5: Unknown variable z

Je moet zelf wel eerst een z waarde aanmaken.

1 vraagje, waarom gebruik je niet gewoon
GML:
lengthdir_x(len,dir)
lengthdir_y(len,dir)
In plaats van
GML:
len*cos(dir)
len*-sin(dir)

Dat kan ook, maar omdat hier geen z functie voor is leek het me gewoon duidelijker om alles op deze manier te doen. Ook is het volgens mij sneller.

GML:
window_mouse_set(window_get_width()/2,window_get_height()/2)

Kom op zeg, ik weet zeker dat het ook zonder deze code kan.

Waarom gebruikt iedereen precies dezelfde mouselook met deze code? Als ik dan tijdens het spel effe snel iets moet opzoeken, doe ik ALT TAB, en dan beweegt mijn muis niet meer. Dan moet ik het hele spel afsluiten om mijn muis te gebruiken.

Het is heel goed mogelijk een mouselook te maken zonder deze spel-irritatie. Ik heb op mijn laptop deze script nog waarmee je je muis nog wel kan bewegen, zonder dat je muis heletijd naar (100,100) of (window_get_width()/2,window_get_height()/2) gaat.

Dit is makkelijk op te lossen door een menu te maken. Ik neem ook aan dat niet je hele spel bestaat uit mouselook. Ook hebben de meeste mensen niet midden in een shooter een onbedwingbare drang om iets op te zoeken.


Naar boven Gelogd

wargod1997
Gebruiker

Offline Offline

Berichten: 24


« Antwoord #5 Gepost op: 21 April 2009, 15:35:18 »

hoe doe je dat?!


Wargod1997
Naar boven Gelogd

tidob1
Gebruiker


Offline Offline

Berichten: 2610


« Antwoord #6 Gepost op: 21 April 2009, 16:58:18 »

Als je dat nog niet weet, kun je beter met wat simpelere dingen (2D) beginnen, want dit is elementair.

btw het antwoord is, in het Create event:
GML:
z=0

Naar boven Gelogd

Maarten Baert
Forumbeheerder


Offline Offline

Berichten: 4942

Gelieve quote te gebruiken als je PMs beantwoordt.


WWW
« Antwoord #7 Gepost op: 21 April 2009, 17:32:40 »

@Mohammed-f: Het kan niet zonder. Wat die andere games doen, is gewoon kijken of het spel focus heeft en als het de focus verliest de mouselook uitschakelen. Je kan dat heel simpel doen door 'freeze the game when the form looses focus' aan te zetten.


Naar boven Gelogd

wargod1997
Gebruiker

Offline Offline

Berichten: 24


« Antwoord #8 Gepost op: 22 April 2009, 17:18:37 »

Ty voor dat antwoord. Ik weet dat je beter met 2d kan beginnen. Maar probbeer gewoon wat uit


Wargod1997
Naar boven Gelogd

Hedanito
Gebruiker


Offline Offline

Berichten: 758


« Antwoord #9 Gepost op: 27 April 2009, 00:29:06 »

Update: 2 hoofstukken erbij, 3rd person view en MMO view.


Naar boven Gelogd

lucb1e
Gebruiker


Offline Offline

Berichten: 4554


WWW
« Antwoord #10 Gepost op: 27 April 2009, 17:31:00 »

Ty voor dat antwoord. Ik weet dat je beter met 2d kan beginnen. Maar probbeer gewoon wat uit
hmm ik denk dat 2d uitproberen al moeilijk zat is als je dat niet weet Knipoog
Ik werk al een tijdje met GM maar 3d is ook nog te moeilijk voor mij.


Naar boven Gelogd

Ruud Verbeek
Gebruiker


Offline Offline

Berichten: 1728

miauw


WWW
« Antwoord #11 Gepost op: 8 Mei 2009, 08:20:00 »

Heb je misschien een example?
Ik krijg allemaal bugs... Treurig


A well-used door needs no oil on its hinges.
A swift-flowing stream does not grow stagnant.
A deer blends perfectly into the forest colors.
Software rots if not used.

These are great mysteries.
Naar boven Gelogd

thomasderoo
Gebruiker

Offline Offline

Berichten: 564

where is it? IS IN MA MOUTH


« Antwoord #12 Gepost op: 14 Juni 2009, 17:13:17 »

goede tut. Knipoog  maar zou je kunnen toevoegen hoe je kunt bepalen waar de kogel inslaat(de Z as) in een fps. k begrijp dat nog steeds niet Twijfelachtig
bedankt en alvast bedankt


Naar boven Gelogd

Laloeka
Gebruiker


Offline Offline

Berichten: 2551


WWW
« Antwoord #13 Gepost op: 14 Juni 2009, 19:04:56 »

als je de 2d afstand hebt (met bijvoorbeeld point_distance()) en de plaats (2d) van waar de kogel raakt:
GML:
// get_z_distance(arg0,arg1);

//argument0 = afstand (2D)
//argument1 = zdirection
return argument0*sin(zdirection);

Dit zou moeten werken. Misschien dat iemand dit kan checken want ik zit nu op een computer zonder GameMaker Twijfelachtig..

Laloeka Blij
Ps. Hoort dit niet bij Beginners/Gevorderden..?



-------
Naar boven Gelogd

kajgies
Gebruiker


Offline Offline

Berichten: 101

hoi


WWW
« Antwoord #14 Gepost op: 17 Juli 2009, 11:37:45 »

ik krijg de error:

___________________________________________
ERROR in
action number 3
of Draw Event
for object obj_player:

Error in code at line 5:
   if zdirection+(ychange/10) <=90 or zdirection+(ychange/10) >=270{

at position 5: Unknown variable zdirection


I am a in the GM Quiz!
Naar boven Gelogd

Advertenties
« vorige volgende »
Pagina's: [1] 2
Print


Topic Informatie
0 geregistreerde leden en 1 gast bekijken dit topic.

Ga naar:  

Powered by SMF 1.1.21 | SMF © 2006-2007, Simple Machines
www.game-maker.nl © 2003-2019 Nederlandse Game Maker Community