Rotation zur Maus //-3d

  • GM 6

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

  • Rotation zur Maus //-3d

    Es wird ja jeden Tag ein neues Thema aufgemacht wie man denn ein Sprite zur Maus drehen kann, naja mein Problem ist leicht komplexer.
    Ich hab gestern mal angefangen ein kleines 3d Spielchen mit einem Panzer zu programieren, und der obere Teil des Panzers soll sich immer zur Maus drehen.
    Das sieht dann so aus:


    Wenn ich meinen Panzer nicht bewege läuft alles (nahezu) perfekt, doch wenn ich mich etwas bewege ist die Drehung etwas komisch, also das Rohr möchte nicht mehr richtig mitdrehen, umso weiter ich mich vom Start entferne umso schlimmer wird es.
    Zum Verständis kommen hier natürlich noch die Codes:

    GML-Quellcode

    1. dir=point_direction(x,y,mouse_x,mouse_y)// Die ist die Variable mit der ich das Rohr drehen lasse
    << Step

    GML-Quellcode

    1. d3d_transform_add_translation(-x,-y,0);
    2. d3d_transform_add_rotation_z(dir);
    3. //hier setze ich die Variable ein
    4. d3d_transform_add_translation(x,y,0);
    5. d3d_model_draw(md2,x,y,z,tex)
    6. //md2 hab ich mein model genannt (ist aber eher unwichtig)
    7. d3d_transform_set_identity();
    << Draw

    Ich denke dieses Porblem ist leicht zu lösen, ich habe wohl irgendwas übersehen oder falsch gemacht.

    Mfg, Moolt
  • Du kannst auch im 3D Modus die Richtung nicht ausgehend von point_direction(x,y,mouse_x,mouse_y) berechnen. Das ist ein klarer Logikfehler! Wenn dein Panzer immer in der Mitte des Bildschirms ist, müssen x und y die Bildschirmmitte angeben:

    GML-Quellcode

    1. point_direction(display_get_width/2,display_get_height/2,mouse_x,mouse_y);


    (Ich bin mir nicht sicher, ob "display_get_width/height" richtig ist, aber ich denke schon...)
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.
  • Den Code kann ich gut nachvollziehen, was ich nicht nachvollziehen kann ist warum er nicht funktioniert.
    Ich hab die Datei mal hochgeladen, vielleicht ist ja jemand so nett und schaut es sich mal an, vielleicht hab ich ja noch einen Logikfehler gemacht.
    >>Link wieder entfernt.<<

    Danke schonmal, Moolt

    Addit: Es kommt das gleiche Problem wie vorher, jedenfalls ähnlich.

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

  • Deine Auflösung ist 640x480. Also musst du vom Mittelpunkt 320x240 ausgehen, dann geht es auch.
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.
  • Ich bin so bräsig, danke Mauge.
    Also für alle die dieses Thema mal unter der SuFu finden sollten und wissen wollen wie der Code jetzt ist:

    GML-Quellcode

    1. dir=point_direction(320,240,mouse_x,mouse_y);


    Nochmal Danke.

    *Solved*

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

  • Im Übrigen brauchst du im 3D Modus keine Views zu benutzen, denn das ist Schuld daran, dass die Auflösung so mies ist. Hab mich schon gewundert, dass ich es nicht ändern kann..
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.
  • Benutzer online 1

    1 Besucher