game maker
Gebruikersnaam:
Wachtwoord:
Home Info Forums Help
Welkom, Gast. Alsjeblieft inloggen of registreren.
De activerings e-mail gemist?
+  Forums
|-+  Werken met Game Maker
| |-+  Beginners (Moderators: Erik Leppen, ericlegomeer, BlueMoonProductions)
| | |-+  Meedraaien met player
Pagina's: [1]
« vorige volgende »
Print
Advertenties

sandwichmenno
Gebruiker


Offline Offline

Berichten: 1021

Wie wilt een avatar voor me maken?


« Gepost op: 9 September 2012, 10:23:34 »

Ik ben (Nog steeds) bezig met Champions.

Ik wil dat als de speler tegen de bal aanloopt, dat hij vast plakt, daarvoor gebruik ik deze code:
GML:
//create event:
plak=0;
GML:
//step event:
if (plak==1)
 {
 x=obj_player.x+7;
 y=obj_player.y;
 }

Maar dat werkt alleen goed als de player met zijn gezicht (Dus dat hij er naartoe kijkt) tegen de bal aanloopt. Als de player draait en hij heeft de bal, blijft de bal achter de player staan (Zie voorbeeld), maar de bal moet meedraaien met de speler.

Voorbeeld:
Wat hij doet:
Goed:
o=bal >=player
------------------
-------->o-------
------------------
Fout:
------------------
-------<o--------
------------------

Wat moet:
Goed:
o=bal >=player
------------------
-------o<--------
------------------

Ik hoop dat jullie het snappen.


ęSandwich Studios/RaiderInteractive
Mij helpen? Graag!
Naar boven Gelogd

ericlegomeer
Forumbeheerder


Offline Offline

Berichten: 9222

http://xkcd.com/386/


« Antwoord #1 Gepost op: 9 September 2012, 10:32:44 »

Je kunt de +7 af laten hangen van de richting van de speler.

Die kun je opvragen via obj_speler.direction als die 0 is beweegt de speler naar rechts en bij 180 naar links. Echter, dit werkt alleen als je speler met speeds werkt.

Wanneer je je speler laat verspringen, dus letterlijk zijn x en y aanpassen, dan zou je t x en xprevious moeten werken. Als de xprevious groter is dan de x, dan loopt hij naar links en bij kleiner naar rechts.

Mocht dit je moeilijk lijken, kun je altijd in je speler nog een variabele bijhouden die de looprichting onthoudt. Deze wijzig je dan gewoon bij de toetsaanslagen.

Uiteindelijk komt het dan nog neer op een if-statement om de richting te controleren en aan de hand daarvan de juiste x positie te geven aan de bal.


Naar boven Gelogd

sandwichmenno
Gebruiker


Offline Offline

Berichten: 1021

Wie wilt een avatar voor me maken?


« Antwoord #2 Gepost op: 22 September 2012, 15:49:01 »

Je kunt de +7 af laten hangen van de richting van de speler.

Die kun je opvragen via obj_speler.direction als die 0 is beweegt de speler naar rechts en bij 180 naar links. Echter, dit werkt alleen als je speler met speeds werkt.

Wanneer je je speler laat verspringen, dus letterlijk zijn x en y aanpassen, dan zou je t x en xprevious moeten werken. Als de xprevious groter is dan de x, dan loopt hij naar links en bij kleiner naar rechts.

Mocht dit je moeilijk lijken, kun je altijd in je speler nog een variabele bijhouden die de looprichting onthoudt. Deze wijzig je dan gewoon bij de toetsaanslagen.

Uiteindelijk komt het dan nog neer op een if-statement om de richting te controleren en aan de hand daarvan de juiste x positie te geven aan de bal.
Sorry voor laat antwoord, maar mijn poppetje beweegt met Image_angle (Code's hieronder), en dan werkt de code van jou niet, dan komt de bal af en toe zonder mee te gaan met de speler voor de speler terecht. De bal moet dus voor de speler meedraaien, en de speler draait en loopt met image_angle.

Create speler:
GML:
image_index=0
image_speed=0

Step speler:
GML:
if keyboard_check(vk_left)
{
image_angle += 3;
}

if keyboard_check(vk_right)
{
image_angle -= 3;
}
if keyboard_check(vk_up)
{
  speed=3;
  direction = image_angle;
}
if keyboard_check(vk_down)
{
  speed=-3;
  direction = image_angle;
}

if keyboard_check_released(vk_up)
{
  speed=0;
  direction = image_angle;
}
if keyboard_check_released(vk_down)
{
  speed=0;
  direction = image_angle;
}


ęSandwich Studios/RaiderInteractive
Mij helpen? Graag!
Naar boven Gelogd

sandwichmenno
Gebruiker


Offline Offline

Berichten: 1021

Wie wilt een avatar voor me maken?


« Antwoord #3 Gepost op: 24 September 2012, 15:50:58 »

*bump*


ęSandwich Studios/RaiderInteractive
Mij helpen? Graag!
Naar boven Gelogd

StefanJanssen
Gebruiker


Offline Offline

Berichten: 5211

Was StefannafetS


WWW
« Antwoord #4 Gepost op: 24 September 2012, 18:41:21 »

dan kun je ipv direction toch image_angle doen??


Begrijp je iets niet in een uitleg van een gebruiker? Bekijk eerst de helpfile voor je iets vraagt
Naar boven Gelogd

sandwichmenno
Gebruiker


Offline Offline

Berichten: 1021

Wie wilt een avatar voor me maken?


« Antwoord #5 Gepost op: 25 September 2012, 06:21:25 »

dan kun je ipv direction toch image_angle doen??
Van wat?


ęSandwich Studios/RaiderInteractive
Mij helpen? Graag!
Naar boven Gelogd

StefanJanssen
Gebruiker


Offline Offline

Berichten: 5211

Was StefannafetS


WWW
« Antwoord #6 Gepost op: 25 September 2012, 06:39:18 »

Je kunt de +7 af laten hangen van de richting van de speler.

Die kun je opvragen via obj_speler.direction als die 0 is beweegt de speler naar rechts en bij 180 naar links. Echter, dit werkt alleen als je speler met speeds werkt.

Wanneer je je speler laat verspringen, dus letterlijk zijn x en y aanpassen, dan zou je t x en xprevious moeten werken. Als de xprevious groter is dan de x, dan loopt hij naar links en bij kleiner naar rechts.

Mocht dit je moeilijk lijken, kun je altijd in je speler nog een variabele bijhouden die de looprichting onthoudt. Deze wijzig je dan gewoon bij de toetsaanslagen.

Uiteindelijk komt het dan nog neer op een if-statement om de richting te controleren en aan de hand daarvan de juiste x positie te geven aan de bal.

Maar anders kun je ook met lengthdir_ werken.


Begrijp je iets niet in een uitleg van een gebruiker? Bekijk eerst de helpfile voor je iets vraagt
Naar boven Gelogd

Lars141
Gebruiker


Offline Offline

Berichten: 379

Professional Procrastinator... Ugh.


WWW
« Antwoord #7 Gepost op: 25 September 2012, 22:46:50 »

Als je met image_xscale werkt, zou ik
GML:
//step event:
if (plak==1)
 {
 x=obj_player.x+7;
 y=obj_player.y;
 }
veranderen in
GML:
//step event:
if (plak==1)
 {
 x=obj_player.x+obj_player.image_xscale*7;
 y=obj_player.y;
 }


Naar boven Gelogd

sandwichmenno
Gebruiker


Offline Offline

Berichten: 1021

Wie wilt een avatar voor me maken?


« Antwoord #8 Gepost op: 26 September 2012, 06:25:02 »

Als je met image_xscale werkt, zou ik
GML:
//step event:
if (plak==1)
 {
 x=obj_player.x+7;
 y=obj_player.y;
 }
veranderen in
GML:
//step event:
if (plak==1)
 {
 x=obj_player.x+obj_player.image_xscale*7;
 y=obj_player.y;
 }
Ik gebruik verder geen xscale.

Maar anders kun je ook met lengthdir_ werken.
Bij lengthdir_ blijft de bal doorrollen



ęSandwich Studios/RaiderInteractive
Mij helpen? Graag!
Naar boven Gelogd

ericlegomeer
Forumbeheerder


Offline Offline

Berichten: 9222

http://xkcd.com/386/


« Antwoord #9 Gepost op: 26 September 2012, 08:44:15 »

Ah, het is dus een topdown spel? Aan de hand van je situatieschets in de eerste post, dacht ik dat het om een sideview spel ging. Wanneer het om een topdown spel gaat, kun je het beste gebruik maken van lengthdir_. De code die je in de beginpost gaf:
GML:
//step event:
if (plak==1)
 {
 x=obj_player.x+7;
 y=obj_player.y;
 }
Komt dan niet neer op +7, maar op een lengthdir_ berekening over de juiste richting. Richtingen zijn verdeeld over 360 graden, dus als we iets tegengesteld maken aan waar de speler heen loopt (om het dus achter hem te hangen), moeten we 180 van de richting van de speler eraf halen. Wat je dan krijgt, is het volgende:
GML:
x = obj_player.x + lengthdir_x(7, obj_player.direction - 180);
y = obj_player.y + lengthdir_y(7, obj_player.direction - 180);
Voor de x gebruik je dus de _x versie en voor de y de _y versie. Verder gebruik je bij beiden afstand 7, omdat dat de regel is. Je gebruikt bij allebei dezelfde lengtes als je wilt dat iets in een cirkel om iets anders draait.

Mocht hier nog iets niet duidelijk aan zijn, of iets toch niet goed aan werken, gewoon aangeven Knipoog


Naar boven Gelogd

sandwichmenno
Gebruiker


Offline Offline

Berichten: 1021

Wie wilt een avatar voor me maken?


« Antwoord #10 Gepost op: 26 September 2012, 14:10:00 »

Zeer erg bedankt, ik heb nog kleine veranderingen aangebracht (Vanwege andere bewegingen etc.) Ik heb nog een tutorial gelezen en mede dankzij jouw uitleg snap ik nu Lengthdir. De code werkt perfect!


ęSandwich Studios/RaiderInteractive
Mij helpen? Graag!
Naar boven Gelogd

Advertenties
« vorige volgende »
Pagina's: [1]
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