setViewDirection - richtig benutzen?

A new update is now available, introducing a lot of new content!
Latest hotfix: 0.7.5.2 (2024-09-10)
  • Hallo,


    ich versuche mir die Ausrichtung des Spielers zu merken und wieder zu Schreiben.
    Leider funktioniert dieser Code:

    Java
    Vector3f pos = new Vector3f(player.getPosition().getX(), player.getPosition().getY(), player.getPosition().getZ());
    Quaternion rotation = new Quaternion(player.getRotation().getX(), player.getRotation().getY(), player.getRotation().getZ(), player.getRotation().getW());
    Vector3f viewDirection = new Vector3f(player.getViewDirection().getX(), player.getViewDirection().getY(), player.getViewDirection().getZ());;
    player.setPosition(pos);
    player.setRotation(rotation);
    player.setViewDirection(viewDirection);

    nicht. Nach spätestens fünf Ausführungen, dieses Schnipsels schaue ich immer nach Norden. Das Regelt sich irgendwie ein ?( .


    Muss ich da noch was Konvertieren?
    Wie?

  • Prinzipiell müssten setRotation() und setViewDirection() nicht gleichzeitig aufgerufen werden. Beide machen sozusagen dasselbe, im Grunde ist setViewDirection() nur eine komfortable Alternative zu setRotation() (damit man sich nicht mit Quaternions rumschlagen muss).
    Wichtig ist, dass ein normalisierter Richtungsvektor übergeben wird. Um den Spieler also Richtung Süden schauen zu lassen, kannst du new Vector3f(0f, 0f, -1f); übergeben. Wenn du stattdessen zB willst, dass der Spieler in Richtung eines anderen Spielers schaut, könntest du das bspw. so bewerkstelligen:


    Dass der Spieler irgendwann nur noch nach Norden geschaut hat ist allerdings merkwürdig. Das würde ich aber eher auf "setRotation()" als auf "setViewDirection()" schieben, ich prüfe das aber dennoch mal nach ;)

  • ja, kuck noch mal in ruhe drüber. 8)


    Ich will ja "nur" die Blickrichtung beim setzen des Teleporter mit Speichern. Die Werte der ViewDirection die ich in der DB habe sind normalizeLocal (also >-1 & <1).


    Hab den Schnipsel mal nur auf player.setViewDirection(viewDirection); begrenzt, und auch mal new Vector3f(0f, 0f, -1f) verwendet. Dabei karm eine ca. 45° nach westen gedrehte Position raus.

    Und Danke ganz <3 für deine Arbeit hier :thumbsup: .

Participate now!

Don’t have an account yet? Create a new account now and be part of our community!