vertex & lengthdir problem

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

  • vertex & lengthdir problem

    also ich lasse mit vertex einen kamera sichtkegel drawen mit diesem code

    GML-Quellcode

    1. ​draw_primitive_begin(pr_trianglestrip);
    2. draw_vertex(x-10,y);
    3. draw_vertex(x+10,y);
    4. draw_vertex(x-90,y+250);
    5. draw_vertex(x+90,y+250);
    6. draw_primitive_end();


    mein problem jetzt ist ich will diesen kegel bewegenn.....ünd dafür wollte ich lengthdir benützen aber ich bekomms einfach nicht hin...normaler weise gehts ja so:
    x = xx+lengthdir_x(len,dir);
    xx = der pünkt üm das es sich drehen soll....
    .in diesem fall wäre das x-10 für die linke seite des sichtkegels..

    dir++;

    aber ich bekomms nicht hin ...

    wäre jemand so nett ünd könnte mir jemand helfen? :sauf:
  • acidrain833 schrieb:

    also ich lasse mit vertex einen kamera sichtkegel drawen mit diesem code

    GML-Quellcode

    1. draw_primitive_begin(pr_trianglestrip);
    2. draw_vertex(x-10,y);
    3. draw_vertex(x+10,y);
    4. draw_vertex(x-90,y+250);
    5. draw_vertex(x+90,y+250);
    6. draw_primitive_end();


    mein problem jetzt ist ich will diesen kegel bewegenn.....ünd dafür wollte ich lengthdir benützen aber ich bekomms einfach nicht hin...normaler weise gehts ja so:
    x = xx+lengthdir_x(len,dir);
    xx = der pünkt üm das es sich drehen soll....
    .in diesem fall wäre das x-10 für die linke seite des sichtkegels..

    dir++;

    aber ich bekomms nicht hin ...

    wäre jemand so nett ünd könnte mir jemand helfen? :sauf:




    also ich würde keinen trianglestrip benutzen da must du immer jeden punkt berechnen ich würde eine pr_trianglelist benutzen auserdehm must du den direction wert von lengthdir mit der direction oder der Image_angle verknüpfen wie in meinem Beispiel.

    GML-Quellcode

    1. draw_primitive_begin(pr_trianglelist);
    2. draw_vertex(x,y);
    3. draw_vertex(x+lengthdir_x(250,direction+45),y+lengthdir_y(250,direction+45));
    4. draw_vertex(x+lengthdir_x(250,direction-45),y+lengthdir_y(250,direction-45));
    5. draw_primitive_end();


    hatte noch etwas zeit dieser Kegel kommt deinem recht nahe.

    GML-Quellcode

    1. draw_primitive_begin(pr_trianglestrip);
    2. draw_vertex(x+lengthdir_x(10,90+direction),y+lengthdir_y(10,90+direction) );
    3. draw_vertex(x+lengthdir_x(10,-90+direction),y+lengthdir_y(10,-90+direction) );
    4. draw_vertex(x+lengthdir_x(250,20+direction),y+lengthdir_y(250,20+direction) );
    5. draw_vertex(x+lengthdir_x(250,-20+direction),y+lengthdir_y(250,-20+direction) );
    6. draw_primitive_end();

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

  • aber ich weiß nicht trianglelist finde ich nicht so güt weil daraüs kann ich kein eingedrücktes rechteck machen...

    benütze ich trianglelist kann ich ein dreieck machen..
    ünd mit trianglestrip kann ich oben zwei pünkte ünd ünten 2 pünkte machen damit es wie ein kegel aüssieht...


    aber werde es mal probieren thx für deine hilfe


    @Gunzli

    EDIT:
    woow hab mir grad dein beispiel angesehn echt toll ...
    könntest dü bitte nochmal so nett sein ünd mir erklären wie das fünktioniert?
    also haüptsächlich das mit der direction hinzüzählen....versteh ich nicht ganz.
    .wieso nicht? thx für deine tolle hilfe

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

  • Gut dann fangen wir mahl an!

    Das erkläre ich schrit für schrit
    draw_vertex(x+lengthdir_x(10,90+direction),y+lengthdir_y(10,90+direction) );

    draw_vertex(x,y,) //ist klar eigentlich klar der punkt der gezeichnet werden soll.

    x , y //der Anfangspunkt ich gehe mahl vom Mittelpunkt des Spielers aus.

    +lengthdir_x , y (10 //ist die Entfernung zwischen x , y in Pixeln

    ,90 //ist die direction in diesem fall nach oben bei - 90 würde der punkt unten gezeichnet werden bei 0 links

    +direction // damit verbinden wir die Richtung in der unser punkt ist mit der Richtung in die unser Spieler gerade schaut.

    jetzt Weils so schön ist noch ein Beispiel für einen schönen Kegel mit pr_trianglelist damit du auch einen Kegel bekommst und um das ganze besser veranschaulichen zu können!

    GML-Quellcode

    1. draw_primitive_begin(pr_trianglelist)
    2. {
    3. var g,lx,ly
    4. g = -45
    5. lx = x+lengthdir_x(30,direction+-45)
    6. ly = y+lengthdir_y(30,direction+-45)
    7. for(var l = -45; l <50; l += 5;)
    8. {
    9. draw_set_color(c_white)
    10. draw_set_alpha(.4)
    11. draw_vertex(lx,ly)
    12. draw_set_color(c_gray)
    13. draw_set_alpha(0.05)
    14. draw_vertex(lx+lengthdir_x(400,g+direction),ly+lengthdir_y(400,g+direction))
    15. g =l
    16. draw_vertex(lx+lengthdir_x(400,l+direction),ly+lengthdir_y(400,l+direction))
    17. }}
    18. draw_primitive_end()
    19. draw_set_color(c_white)
    20. draw_set_alpha(1)
    Alles anzeigen


    g = -45 ist hier dafür da den Startdirection
    mit lx ,ly berechnest du den punkt von Dehm aus der Kegel gezeichnet wird sollte ein Spieler
    eine Taschenlampe in der Hand halten möchtest du bestimmt nicht das das Licht in seiner Stirn begingt!