draw_line mit bestimmter Länge

  • GM 7
  • draw_line mit bestimmter Länge

    Hallo, in meinem Spiel lasse ich von einem bestimmten Objekt eine Linie mit draw_line bis zur Maus zeichnen.
    Wie kann ich einstellen, dass die Linie eine bestimmte Länge hat, egal wie weit die Maus weg ist.
    Die Linie soll quasi nicht zur Maus hingezeichnet werden, sondern nur in Richtung Maus, aber eben mit best. Länge.
    Wie ist das möglich?
    Danke schonmal.
    Gruß Gamer
  • Du könntest draw_line(x+lengthdir_x(deinelänge,deinerichtung),y+lengthdir_y(deinelänge,deinerichtung)); machen ;)
    So far, Schattenphoenix~
    _____________________________________________________________________________
    "Who needs a stairway to heaven...
    If there is an elevator to hell... ?
    "
    - Vergessen
    "Auch ein perfektes Chaos ist etwas vollkommenes."
    - Jean Genet
  • ok danke, wusste nicht, dass es so etwas gibt :thumbsup: :thumbsup: :thumbsup:


    edit: Wenn es so normalerweise richig wäre, dann ist es doch nicht richtig

    GML-Quellcode

    1. draw_line(x,y,lengthdir_x(300,mouse_x),lengthdir_y(300,mouse_y))


    oder wie macht man es sonst, weil so macht der immer in irgendeine richtung aber keine ahnung wie der die Richtung da berechnet.
    Gruß Gamer

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

  • Wow, was is noch dein Problem?

    lengthdir_x berechnet die "x-Distanz" in die angegebene Richtung. lengthdir_y das gleiche für den y-Wert.
    Die Richtung erhälst du durch point_direction(x1,y1,x2,y2).

    Wenn du nun draw_line(x,y,x+lengthdir_x(300,point_direction(x,y,mouse_x,mouse_y)),y+lengthdir_y(300,point_direction(x,y,mouse_x,mouse_y))); machst, malt er, angefangen beim Punkt (x|y) 300 Pixel in die Richtung VON: (x|y) ZU: (mouse_x|mouse_y).

    Ich hoffe du hast mich verstanden, damit du nicht nur kopierst sondern auch etwas lernst.
    So far, Schattenphoenix~
    _____________________________________________________________________________
    "Who needs a stairway to heaven...
    If there is an elevator to hell... ?
    "
    - Vergessen
    "Auch ein perfektes Chaos ist etwas vollkommenes."
    - Jean Genet
  • Komplizierter geht es aber auch nicht mehr ..?

    GML-Quellcode

    1. dir = point_direction(x,y,mouse_x,mouse_y);
    2. draw_line(x,y,x+lengthdir_x(300,dir),y+lengthdir_y(300,dir));

    Noch besser (und verständlicher) wäre ein Skript:

    GML-Quellcode

    1. // draw_line_length(x1,y1,x2,y2,length)
    2. var x1,y1,x2,y2,len,dir;
    3. x1 = argument0;
    4. y1 = argument1;
    5. x2 = argument2;
    6. y2 = argument3;
    7. len = argument4;
    8. dir = point_direction(x1,y1,x2,y2);
    9. draw_line(x1,y1,x1+lengthdir_x(len,dir),y1+lengthdir_y(len,dir));
    Aufrufen geht z.B. so: draw_line_length(x,y,mouse_x,mouse_y,300);
  • copyboy schrieb:

    Komplizierter geht es aber auch nicht mehr ..?

    GML-Quellcode

    1. dir = point_direction(x,y,mouse_x,mouse_y);
    2. draw_line(x,y,x+lengthdir_x(300,dir),y+lengthdir_y(300,dir));

    Noch besser (und verständlicher) wäre ein Skript:

    GML-Quellcode

    1. // draw_line_length(x1,y1,x2,y2,length)
    2. var x1,y1,x2,y2,len,dir;
    3. x1 = argument0;
    4. y1 = argument1;
    5. x2 = argument2;
    6. y2 = argument3;
    7. len = argument4;
    8. dir = point_direction(x1,y1,x2,y2);
    9. draw_line(x1,y1,x1+lengthdir_x(len,dir),y1+lengthdir_y(len,dir));
    Aufrufen geht z.B. so: draw_line_length(x,y,mouse_x,mouse_y,300);


    Wieso komplizierter?
    Das ist doch genau das, was wir gesagt haben, oder nicht?
    So far, Schattenphoenix~
    _____________________________________________________________________________
    "Who needs a stairway to heaven...
    If there is an elevator to hell... ?
    "
    - Vergessen
    "Auch ein perfektes Chaos ist etwas vollkommenes."
    - Jean Genet
  • Schattenphoenix schrieb:

    copyboy schrieb:

    Komplizierter geht es aber auch nicht mehr ..?

    GML-Quellcode

    1. dir = point_direction(x,y,mouse_x,mouse_y);
    2. draw_line(x,y,x+lengthdir_x(300,dir),y+lengthdir_y(300,dir));

    Noch besser (und verständlicher) wäre ein Skript:

    GML-Quellcode

    1. // draw_line_length(x1,y1,x2,y2,length)
    2. var x1,y1,x2,y2,len,dir;
    3. x1 = argument0;
    4. y1 = argument1;
    5. x2 = argument2;
    6. y2 = argument3;
    7. len = argument4;
    8. dir = point_direction(x1,y1,x2,y2);
    9. draw_line(x1,y1,x1+lengthdir_x(len,dir),y1+lengthdir_y(len,dir));
    Aufrufen geht z.B. so: draw_line_length(x,y,mouse_x,mouse_y,300);


    Wieso komplizierter?
    Das ist doch genau das, was wir gesagt haben, oder nicht?


    Er meinte wohl nicht komplizierter sondern unübersichtlicher. Außerdem ist es unnötig zwei mal point_direction() aufzurufen.

    © 2008 by Teamgrill Productions
  • Benutzer online 1

    1 Besucher