sprite Position am Fahrzeug

  • GM 8

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

  • sprite Position am Fahrzeug

    Ich habe ein Fahrzeug sprite mit orgin 60x30.
    Nun soll ein weiteres sprite am Punkt 120x5 gezeichnet werden. Allerdings wird das Fahrzeug durch image_angle gedrecht was den Punkt verfälscht.

    Ich Weiß das es hierfür diese Funktionen gibt:

    GML-Quellcode

    1. lengthdir_x(len, dir);
    2. lengthdir_y(len, dir);


    Mit diesen Funktionen schaffe ich es aber nicht das das weitere sprite auf der genannten Position bleibt es befindet sich immer mittig am Fahrzeug.

    Hier mein Code:

    GML-Quellcode

    1. draw_sprite_ext(spr_1,-1,x+lengthdir_x(60,image_angle),y+lengthdir_y(-25,image_angle),1,1,fahrzeug.direction,c_white,1)
    Meine Webseite: jesoftmedia.de
  • ähh du hast bei lenghtdir_x eine 60 und bei lenghtdir_y -25... wieso das?
    man sollte sie beide mit den selben Argumenten aufrufen, dann wird es gehen...
    Kopiere dies in deine Signatur, um es in deiner Signatur zu haben.
    Achtung: Dieser Beitrag läuft ende des Monats ab, bitte lese ihn noch vor dem Monatswechsel...
    Nach langer zeit wieder im Forum aktiv :D
  • ähhh das ist merkwürdig, hast mal einen Screenshot?

    Edit: hab mal schnell was gebastelt
    Dateien
    • lengthdir.gmk

      (9,65 kB, 200 mal heruntergeladen, zuletzt: )
    Kopiere dies in deine Signatur, um es in deiner Signatur zu haben.
    Achtung: Dieser Beitrag läuft ende des Monats ab, bitte lese ihn noch vor dem Monatswechsel...
    Nach langer zeit wieder im Forum aktiv :D

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Larsi ()

  • Schon mal sorry im Vorraus an Larsi: Vielleicht sage ich jetzt genau das, was du mit deiner Beispiel-Datei demonstrierst.
    Meine Lösung wäre, recht simpel, die Länge und die Richtung des leicht konstruierbaren Vektoren zu bestimmen, die Richtung einfach mit image_angle zu addieren und dann in lengthdir_... einzusetzen:

    GML-Quellcode

    1. var xf, yf, xt, yt; //xfrom, yfrom, xto, yto - einfach ein Ding der Übersicht
    2. xf = 60; yf = 30;
    3. xt = 120; yt = 5;
    4. var len, dir; //length, direction
    5. len = point_distance (xf, yf, xt, yt);
    6. dir = point_direction(xf, yf, xt, yt) + image_angle;
    7. var xx, yy;
    8. xx = lengthdir_x (len, dir);
    9. yy = lengthdir_y (len, dir);
    10. draw_sprite_ext (spr_1, -1, x + xx, y + yy, ...);
    Alles anzeigen

  • Schon mal sorry im Vorraus an Larsi: Vielleicht sage ich jetzt genau das, was du mit deiner Beispiel-Datei demonstrierst.

    Ach geht schon, waren bloß 5 min Arbeit und deins ist eh besser/übersichtlicher :D
    Kopiere dies in deine Signatur, um es in deiner Signatur zu haben.
    Achtung: Dieser Beitrag läuft ende des Monats ab, bitte lese ihn noch vor dem Monatswechsel...
    Nach langer zeit wieder im Forum aktiv :D
  • Danke der Code funktioniert soweit allerdings habe ich jetzt ein anderes Problem ich habe ein Nacht- Effekt mithilfe dieses Tutorials Hier erstellt. Beschleunige ich nun das Fahrzeug wird das Sprite verschoben und beim Stillstand wieder richtig gezeichnet. Weswegen ist das so?
    Meine Webseite: jesoftmedia.de
  • Danke der Code funktioniert soweit allerdings habe ich jetzt ein anderes Problem ich habe ein Nacht-Effekt mithilfe dieses Tutorials hier erstellt. Beschleunige ich nun das Fahrzeug, wird das Sprite verschoben und beim Stillstand wieder richtig gezeichnet. Weswegen ist das so?


    Ich habe eine Beispiel Datei gemacht Auto 1 ist richtig und Auto 2 nicht wieso? (Pause mit der P taste)


    Kann mir keiner helfen?
    Dateien
    • Beispiel.gmk

      (18,93 kB, 187 mal heruntergeladen, zuletzt: )
    Meine Webseite: jesoftmedia.de

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Max77771 ()

  • McGamemake schrieb:

    Wo ist denn das Problem, bei mir sieht alles okay aus ?

    Beim grünen Auto ist das Scheinwerferlicht ein bisschen versetzt, beim pausieren aber nicht.

    Anscheinend wurden die Scheinwerfer für das grüne Auto erst nach obj_lichtersteller erstellt. D.h. das Game Maker ruft erst das End Step Event von obj_lichtersteller und dann erst das End Step Event von den Scheinwerfern auf, die dann die Kooridnaten neu berrechnen (Ich könnte auch falsch liegen). Eine schnelle Lösung wäre alle End Step Events der Scheinwerfer in User Defined 0 Events um zu wandeln. Dann noch einen gemeinsamen Parent setzen, z.B. obj_scheinwerfer (ein zuvor erstelltes Objekt das keinen Code drinnen hat), das End Step Event von obj_lichtersteller löschen und das Draw Event von diesem Objekt durch das hier ersetzen:

    GML-Quellcode

    1. with (obj_scheinwerfer) {
    2. event_perform(ev_other, ev_user0);
    3. }
    4. licht_neuladen();
    5. licht_zeichnen();