Winkel zwischen x und y Achse berrechnen --> falsches Ergebnis



  • Hallo!

    Ich mache gerade ein Spiel in 3D und benötige den Winkel in Grad zwischen dem Monster und mir. Da bekomme ich aber leider immer das falsche Ergebnis! 😡

    Den Winkel berrechne ich so:

    monster[i].anglelr = atan ( (monster[i].z - player.z ) / (monster[i].x - player.x ) ) * 180 / PI;
    

    so habe ich es ebenfalls probiert:

    monster[i].anglelr = atan2 ( monster[i].z-player.z, monster[i].x-player.x ) * 180.0 / PI;
    

    Den Winkel rechne ich schon von Rad in Grad um und ich brauche den, damit die Monster in meine Richtung laufen und mich angreifen. Wenn sie mich nicht töten wollen, macht das Spiel natürlich keinen Spaß 😃 .

    Es kommen zwar immer Werte zwischen -360 und 360 raus, aber irgendwie nie das Richtige.

    Wenn, während ich in der Spielewelt herumlaufe, die z oder x koordinate größer oder kleiner als meine wird, dann verändert sich auch der Winkel des Monsters um mehrere Grad 😞 .

    Habe schon paar Tage nach Winkelberechnungen gegoogelt, aber es gibt immer nur die gleichen Lösungen dazu ..

    Wäre echt toll, wenn ihr mir helft!

    ➡ Danke im Voraus 🙂

    Lg
    SFandler



  • Sind die Koordinaten integers?
    edit: ach, nee, das würde bei atan2 ja nicht zu einem Fehler führen.



  • Ja es sind alle Variablen vom Typ float..


  • Mod

    Ganz dumme Frage: Sollte da nicht y statt z stehen, wenn du den Winkel in der xy-Ebene suchst?

    Und du meinst auch nicht den Sprung im Winkel von -180 Grad auf +180 Grad an einer bestimmten Kreisstelle, oder?



  • Nein, die z-Achse brauche ich. Ich suche den xz-Winkel 😃 . Die y-Achse beachte ich im Spiel garnicht, außer beim Sprung.

    Und wie geht das mit dem +180 und -180 Grad? Daran liegt bestimmt mein Problem. 😮



  • Das sieht für mich so richtig aus, daß ich einen Fehler nur noch in der Definition von PI vermute.



  • Ach so blöd bin ich doch nicht 😃
    PI hab ich so definiert:

    #define PI 3.1415926
    

  • Mod

    SFandler schrieb:

    Und wie geht das mit dem +180 und -180 Grad? Daran liegt bestimmt mein Problem. 😮

    Wenn du kurz vor -180 Grad bist und dich noch ein bisschen weiter drehst, dann springt der atan2 auf +180 Grad. Bei exotischen Definitionen des atan2 sind die Werte für die Sprungstelle eventuell 0 und 360 Grad.

    Und deine erste Methode funktioniert sowieso nicht, aber das solltest du mittlerweile selber gemerkt haben.



  • Danke für die Antwort!

    Es funktioniert jetzt!!

    Danke! 😃 🙂


  • Mod

    Wie, das hat wirklich geholfen? 🕶

    Was war's denn nun?



  • SeppJ schrieb:

    Wie, das hat wirklich geholfen? 🕶

    Was war's denn nun?

    👍 😃


Anmelden zum Antworten