3D Schiessen

  • GM 7

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

  • 3D Schiessen

    Hi,

    Hab noch ein 3D Problem... diesmal geht es das Schiessen direkt an.
    So gehe ich vor:

    GML-Quellcode

    1. // bullet wird bei mausklick erstellt...
    2. if(mouse_check_button(mb_left) && global.bullet_ready = true){
    3. instance_create(x+8,y+8,obj_bullet);
    4. }
    5. // obj_bullet hat nen parent der das objekt drawt...
    6. tex=background_get_texture(tex_bullet);
    7. d3d_draw_ellipsoid(x-1,y-1,zpos-1,x+1,y+1,zpos+1,tex,1,1,9);
    8. // zpos ist in dem fall global.camz sprich die Höhe der Kamera = 10
    9. // obj_bullet create event:
    10. speed = global.bullet_speed; // = 30
    11. direction = obj_camera.direction; // logisch
    12. zpos = global.camz; // Kamera pos = 10
    13. zmove = global.camang; // Kamera Winkel nach oben und unten ausgehend von der Höhe 10 als 0°
    14. // obj_bullet step event:
    15. if(zpos<0){
    16. instance_destroy();
    17. }
    18. else{
    19. zpos += zmove;
    20. if(distance_to_object(obj_wall_basic)<= 0){
    21. instance_destroy();
    22. }
    23. }
    Alles anzeigen

    Nun, wenn ich das so löse fliegt das Bullet zwar in die richtige Richtung, mit dem richtigen Speed, nur die Höhe stimmt nicht (ist ja auch logisch, denn anhand dieses Codes kann das ja nicht richtig sein).
    Ich bin auf der Suche nach einem Code, mit dem ich die richtige Veränderung nach oben (zmove) einstellen kann, dass das Bullet immer in der Mitte des Cursors (Fadenkreuz) zu sehen ist, sodass es fast realistisch ist - wobei weder Gravitaion noch Geschwindigkeitsverlust miteinbezogen werden müssen. Aber dann kann man wenigstens vernünftig zielen.

    Ist jemand gut in Physik oder Mahte, dann immer her mit der Formel :D

    Gruss,
    X-treme
    Bilder
    • test.jpg

      164,06 kB, 1.924×1.200, 282 mal angesehen
    Das Problem zu erkennen ist wichtiger,
    als die Lösung zu erkennen,
    denn die genaue Darstellung des Problems führt zur Lösung.
    ( Albert Einstein )


    I am an according to the gml n00b test!

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von xx-XtremeX-xx ()

  • GML-Quellcode

    1. // bullet wird bei mausklick erstellt...
    2. if(mouse_check_button(mb_left) && global.bullet_ready = true){
    3. instance_create(x+8,y+8,obj_bullet);
    4. }


    Also viel Ahnung von 3D hab ich ehrlich gesagt noch nicht. Aber versuch doch mal am x-Wert von instance_create() "rumzuspielen". Also:

    GML-Quellcode

    1. // bullet wird bei mausklick erstellt...
    2. if(mouse_check_button(mb_left) && global.bullet_ready = true){
    3. instance_create(x,y+8,obj_bullet);
    4. }
  • Also viel Ahnung von 3D hab ich ehrlich gesagt noch nicht. Aber versuch doch mal am x-Wert von instance_create() "rumzuspielen". Also:

    Vielen Dank für deine Antwort, das hat jedoch leider nichts mit dem eigentlichen Problem zu tun.

    Das Problem ist, dass es mir nicht gelingt, das Bullet so zu erstellen bzw. so einen Step Event zu erstellen, dass das Bullet auch dann zur Mitte des Cursors bzw. dort hin fliegt, wo der Cursor hinzeigt und nicht 100 px darüber oder 100px darunten.
    Es ist eben so im Moment:

    Ich schiesse, Bullet fliegt durch die Mitte des Cursors und steigt weiter in den Himmel - das ist falsch! Es darf nicht weitersteigen - deshalb muss es irgendwie gelingen, die zposition im Step-Event so zu erhöhen, dass diese Position auf die Distanz immer zunimmt, jedoch nie grösser als der Winkel der Kamera (oben/unten) wird.

    Es ist recht kompliziert, aber wer schon einmal einen 3D Shooter wie z.B. (Counter Strike) gespielt hat weiss ja, dass der Schuss immer zur Maus hinfliegt egal wo man hinschiesst. Mein Code ist so, dass wenn ich z.B. in einem 10 Grad Winkel schiesse, dann ist der zwar kurzfristig bei 10 steigt aber mit der Distanz weiter an. Man kann das mit Schnellfeuerwaffen vergleichen - wenn man da ballert, was das zeug hält, werden die Schüsse ja immer ungenauer - und so ist das bei mir auch - der Winkel stimmt hald nur z.B. in den ersten 100 Pixel...

    Da brauch ich etwas, dass jeweils ausrechnet, wie die neue Flugbahn verläuft, sodass es egal ist, ob ich nur 10 meter oder 100 meter schiesse.

    Ich hab mal versucht das ganze von der Seite aufzuzeichnen... Dunkelblau ist der momentane Flugbahn, Rot die gewünschte. Das hellblaue ist nur zur veranschaulichung
    Bilder
    • bsp.jpg

      43,65 kB, 640×640, 173 mal angesehen
    Das Problem zu erkennen ist wichtiger,
    als die Lösung zu erkennen,
    denn die genaue Darstellung des Problems führt zur Lösung.
    ( Albert Einstein )


    I am an according to the gml n00b test!

    Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von xx-XtremeX-xx ()

  • Logisch hats was mit der z-Achse zu tun ^^
    Aber es weiss offenbar leider niemand, wie ich das lösen kann... :pinch:
    Das Problem zu erkennen ist wichtiger,
    als die Lösung zu erkennen,
    denn die genaue Darstellung des Problems führt zur Lösung.
    ( Albert Einstein )


    I am an according to the gml n00b test!
  • dieses Tutorial müsste dir weiterhelfen(Hier)
    Meine Spiele:
    - Mission A
    - Mission B
    - The Virus 1, 2, 3
    - The Virus 4: The Excision
    - Blur melts Snow
    - Blur melts Snow: 2nd Version
    - Cave Jumper

    Hauptrojekt: Party Mania(Arbeitstitel) - große Multiplayer-Minispielsammlung
    In Planung: Planet Jumper(Nachfolger von Cave Jumper)
  • Hey, ****** geiles Tut - genau sowas habe ich gebraucht, vielen Dank!! :D

    Für die, die noch wissen wollen wie es geht...

    Ich hab einfach als zmove -> global.camang (bzw. pitch - macht hald jeder anders ^^)
    und dann im step von dem bullet -> zpos -= tan(degtorad(-zmove))*speed; (zpos ist die z position vom bullet)

    Gruss,
    X-treme
    Das Problem zu erkennen ist wichtiger,
    als die Lösung zu erkennen,
    denn die genaue Darstellung des Problems führt zur Lösung.
    ( Albert Einstein )


    I am an according to the gml n00b test!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von xx-XtremeX-xx ()