draw_line ohne Endpunkte

  • GM 7

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

  • draw_line ohne Endpunkte

    Hi ich bins mal wieder =)

    Hab ne Frage weil ich's einfach nicht hinbekomme...
    Ich hab mit draw_line eine ,(wer hätte es gedacht?), eine Linie gezeichnet die vom Spieler zum Cursor geht.
    Das Problem ist das es gleichzeitig auch noch eine Kollisionslinie ist und sie sollte nicht beim cursor aufhören.

    was ich suche ist eigentlich so vorzustellen


    draw_line(x1,y1,x2,y2,len)
    aber das gibts nicht

    und wenn ich mit lengthdir arbeite ist die Linie zwar länger, aber geht am cursor vorbei.

    Ich bin mir sicher das die Lösung sehr einfach ist aber ich kriegs nicht hin :S
  • Sorry, ich kriegs auch net hin, habs mit

    GML-Quellcode

    1. draw_line(x,y,lengthdir_x(length,point_direction(x,y,mouse_x,mouse_y)),lengthdir_y(x,y,mouse_x,mouse_y));


    probiert


    Mich würd aber auch mal interessieren, wie man sozusagen ne Gerade zeichnet.
    Gruß Gamer
  • draw_line(x,y,x+lengthdir_x(length,point_direction(x,y,mouse_x,mouse_y)),y+lengthdir_y(length,point_direction(x,y,mouse_x,mouse_y));
    "das war meine letzte flamewar PM an dich ."
  • Moin,

    eigentlich müsste es so gehen:

    GML-Quellcode

    1. Var dir, tmp_x, tmp_y;
    2. dir = point_direction(x,y,mouse_x,mouse_y)
    3. tmp_y = lengthdir_y(1000,dir)
    4. tmp_x = lengthdir_x(1000,dir)
    5. draw_line(x,y,x+tmp_x,y+tmp_y)


    Jedoch sind bei mir auch abweichungen von der Mausposition...
    ich werde mir das demnächst mal ansehen bin gerade zu müde für sowas.

    habe mal ne test gm6 angefügt vielleicht funktioniert es ja bei anderen.


    MfG Genesis

    edit: ah danke blubberblub hatte ich ganz vergessen(hab es verbessert)
    btw; hatte ich dir das Konzept schon geschickt?

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

  • Wenn ich dich richtig verstanden hab:

    GML-Quellcode

    1. // draw_line_trim(x1,y1,x2,y2,trimstart,trimend)
    2. var x1,y1,x2,y2,trimstart,trimend,dir,dis;
    3. x1 = argument0; y1 = argument1;
    4. x2 = argument2; y2 = argument3;
    5. trimstart = argument4;
    6. trimend = argument5;
    7. dir = point_direction(x1,y1,x2,y2);
    8. dis = point_distance(x1,y1,x2,y2);
    9. if (dis-trimstart-trimend<0) { exit; }
    10. x1 = x1+lengthdir_x(trimstart,dir);
    11. y1 = y1+lengthdir_y(trimstart,dir);
    12. x2 = x2+lengthdir_x(trimend,dir+180);
    13. y2 = y2+lengthdir_y(trimend,dir+180);
    14. draw_line(x1,y1,x2,y2);
    Alles anzeigen

    Verwendungsbeispiel:

    GML-Quellcode

    1. draw_line_trim(x,y,mouse_x,mouse_y,8,12);
    2. draw_circle(x,y,8,true);
    3. draw_circle(mouse_x,mouse_y,12,true);

    (Soll ich das auch in copy's nützliche Scripte tun?)

    EDIT: Und wenn du wirklich draw_line_len(x1,y1,x2,y2,len) meintest:

    GML-Quellcode

    1. // draw_line_len(x1,y1,x2,y2,len)
    2. var x1,y1,x2,y2,len,dir;
    3. x1 = argument0; y1 = argument1;
    4. x2 = argument2; y2 = argument3;
    5. len = argument4;
    6. // Volgende Zeile auskommentieren,
    7. // wenn es nicht weiter als zum Cursor gehen soll:
    8. // len = min(len,point_distance(x1,y1,x2,y2));
    9. dir = point_direction(x1,y1,x2,y2);
    10. x2 = x1+lengthdir_x(len,dir);
    11. y2 = y1+lengthdir_y(len,dir);
    12. draw_line(x1,y1,x2,y2);
    Alles anzeigen
  • Ich hab jetzt nicht alle ausprobiert nur die von blubberblub .
    die hat mein problem auch schon gelöst
    vielen Dank
    und natürlich auch an die anderen :thumbsup:
    sry aber ihr habt so schnell gepostet da kam ich mit dem probieren nicht nach, weils n anderes problem gab =o

    übrigens blubberblub fehlt am schluss noch ne klammer :)

    Edit: The Gamer du meinst wahrscheinlich nicht eine Gerade Linie oder?
    Edit2: Der Vorschlag von Genesis geht auch super
    @copyboy bei deinem edit: Ich weiß nicht was die "argument" Variablen bedeuten, hab noch nie mit sowas gearbeitet kanns also nicht probieren

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Eumi ()

  • Mist, ich wusste doch, dass es so irgendwie geht, nur 4 Zeichen vergessen.


    edit: doch eine Gerade ist eine unendliche Linie, die durch 2 Punkte geht, ich mein schon ne gerade Linie.
    Hatte wie gesagt nur einen kleinen denkfehler.
    Gruß Gamer