Laserpointer

  • GM 8

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

  • Laserpointer

    Bei meinem 2D Jump'n' Run möchte ich an meine Pistole einen Laserpointer anbauen, der einen roten Laserstrahl von der Waffe aus bis an die nächste Wand leuchtet. Ich habe es natürlich einfach mal mit :action_drawline: also Draw Line unter Draw getestet, mit den Einstellungen x, y und mouse_x und mouse_y.
    Das Ergebnis war natürlich eine Linie von der Waffe bis zur Maus, die durch alles durch geht und bei der Maus einfach endet. Wie mache ich es, dass die Linie
    1. Auch durch den Mauszeiger durchgeht und weitergeht und
    2. dass die Linie stoppt, wenn sie auf eine Wand trifft?
    MfG FlashXenon

    :action_sprite:
  • Ich hab vor längerer Zeit einmal ein Script dafür gemacht. Erstell im Game Maker ein neues Script unter den Ressourcen und benenn es draw_line_collision. Füge dann diesen Code ein:

    GML-Quellcode

    1. var xp,yp,dir,maxlen,prec,obj;
    2. xp=argument0;
    3. yp=argument1;
    4. dir=argument2;
    5. maxlen=argument3;
    6. prec=argument4;
    7. obj=argument5;
    8. if (prec=0)
    9. prec=4;
    10. while (collision_line(xp,yp,xp+lengthdir_x(maxlen,dir),yp+lengthdir_y(maxlen,dir),obj,false,false))
    11. && (maxlen>prec*2)
    12. {
    13. maxlen/=2;
    14. }
    15. while !(collision_line(xp,yp,xp+lengthdir_x(maxlen,dir),yp+lengthdir_y(maxlen,dir),obj,false,false))
    16. &! (maxlen>argument3-prec)
    17. maxlen+=prec;
    18. draw_line(xp,yp,xp+lengthdir_x(maxlen,dir),yp+lengthdir_y(maxlen,dir));
    Alles anzeigen


    Um die Linie nun zu zeichnen fügst du im Draw Event ein ein und schreibst:

    GML-Quellcode

    1. draw_line_collision(startpunkt x, startpunkt y, richtung, maximale länge, genauigkeit, objekt)


    Genauigkeit gibt an, wie genau die Kollision ermittelt werden soll, ein Wert zwischen 4 und 8 sollte ausreichen (Je kleiner der Wert, desto genauer). Bei Objekt setzt du einfach den Namen des Objekts ein, an dem du die Linie stoppen willst.

    © 2008 by Teamgrill Productions
  • Benutzer online 1

    1 Besucher