In 3d Spielen nicht flüssig sondern Schrittweise laufen

  • GM 7

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • In 3d Spielen nicht flüssig sondern Schrittweise laufen

    Hey liebe Gm Community,

    ich hätte da mal eine kleine Frage bezüglich des "Schrittweisen Gehens" in 3D Spielen.

    Also ich habe mal ein wenig an dem FPS Tutorial von YoYoGames rumprobiert und festgestellt,dass ich , wenn ich bei <Left pressed> folgendes eingebe:

    GML-Quellcode

    1. direction+=90;
    , die Kamera um 90 Grad nach Links drehen kann.

    Meine Idee war nun, dass der Spieler sich nur Schrittweise fortbewegen soll...

    Also ich möchte, dass der Spieler immer 32 positionen (x+=32;???) in die Richtung gehen soll, in die er grade schaut...

    Kann mir da vielleicht helfen???
    (der Tutorial Code (wenn man flüssig laufen will) lautet:

    GML-Quellcode

    1. {
    2. var maxspeed;if keyboard_check(vk_shift) maxspeed = 3 else maxspeed = 1.5;if (speed < maxspeed ) speed = min(maxspeed ,speed+0.4);
    3. }

    Danke ,Mfg :)
  • also ich weiß nicht ob es in 3D anders ist, aber in 2D kannst du einfach ne Variable direction nehmen und dann...

    if <Up Pressed> and direction=0
    then ...
    if <Up Pressed> and direction=90
    then ...

    usw.

    Ich hoffe du weißt wie ich das meine.
    Gruß Gamer
  • Du kannst ja mit den lenghtdir Funktionen, der Länge der Strecke, die bewegt werden soll und der Blickrichtung
    des Spielers den x bzw y Anteil rauskriegen und dann entsprechend bewegen:

    GML-Quellcode

    1. if (keyboard_check_pressed(vk_up)){
    2. x+=lenghtdir_x(32,direction);
    3. y+=lenghtdir_y(32,direction);
    4. }
    5. else if ()
    6. ...
    ___________________________________________________________
    Beware of wild pointers
    ______Hinweis für Allergiker: Kann Spuren von Ironie enthalten_____
  • kannst du das nochmal näher eläutern ;)?

    Also Ziel ist es, wie in den uralt Games, dass ich auf pfeiltasten im Spiel direkt drücke und sich der Charakter dreht (90grad),wenn man drehen drückt und 32 pos. nach vorn wenn man den nach vorne pfeil drückt(im game,nich tastatur^^)




    Auf dem Pic hier sieht man eine solche Pfeiltastatur im game unten rechts...

    terragame.com/downloadable/zzz…ouds_of_xeen/screen_1.jpg
  • lengthdir_x(len,dir) Gibt die horizontale x-Komponente von dem Vektor bestimmt durch die gegebene Länge und Richtung wieder.
    lengthdir_y(len,dir) Gibt die vertikale y-Komponente von dem Vektor bestimmt durch die gegebene Länge und Richtung wieder.
    (Siehe Hilfe). Du legst ganz einfach auf die Links/Rechts Taste direction+/-=wert zum drehen und auf die Hoch Taste den bereits
    geschriebenen Code

    GML-Quellcode

    1. x+=lenghtdir_x(32,direction);
    2. y+=lenghtdir_y(32,direction);

    Dadurch bewegt sich deine Spielfigur in die Blickrichtung um 32 Einheiten.
    Lenghtdir_x/y macht im Prinzip nichts anderes, als mithilfe eines gedachten Vektors, der von 0,0 unter dem Winkel direction mit einer
    Länge von 32 Einheiten ausgeht. (Kann man sich einfach als Pfeil vorstellen).
    Der Punkt, auf den der Vektor zeigt hat dann die Koordinaten x,y und die gibt der entsprechende lenghtdir Funktion zurück und dieser Punkt ist
    der Zielpunkt deiner Bewegung (allerdings immer plus die aktuelle Position)
    ___________________________________________________________
    Beware of wild pointers
    ______Hinweis für Allergiker: Kann Spuren von Ironie enthalten_____
  • mmmh also er erkennt die variable lenghtdir net...

    wie setzte ich die?bzw wo?

    im Create des Spielers wird bei mir nur die blickrichtung und Kamera gesetzt:

    GML-Quellcode

    1. {global.camx = x;
    2. global.camy = y;global.camsin = sin(direction*pi/180);global.camcos = cos(direction*pi/180);
    3. }