Drehung eines Würfels in einem 3D-Raum in Einheit

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Drehung eines Würfels in einem 3D-Raum in Einheit

by Anonymous » 24 Dec 2024, 09:41

Ich drehe einen Würfel sowohl auf der vertikalen als auch auf der horizontalen Achse.
Dafür habe ich 4 Eingaben. Nach links/rechts und oben/unten drehen. Der Eingabebereich reicht von -180 bis 180 Grad auf jeder Achse.
Ich habe das bisher versucht:
Vector3 targetEulerAngles = new Vector3(y, 0, 0); // Target rotation in Euler angles
m_transForYaw.eulerAngles = (targetEulerAngles);

targetEulerAngles = new Vector3(0, 0, -x);

m_tranfForPitch.eulerAngles= (targetEulerAngles);

m_transRotateAround.rotation = m_transForYaw.rotation * m_tranfForPitch.rotation;

Meine Frage/mein Problem ist: Wenn die x-Rotation mehr als 90 beträgt, dreht sich m_transForYaw nicht zur Seite, sondern um den Vorwärtsvektor.
Ich habe auch „Umdrehen“ ausprobiert.
Wissen Sie, wie man das Problem löst, dass es sich unabhängig von vorherigen Drehungen nur nach links/rechts dreht?
Aus meiner Sicht besteht das Problem darin, dass ich den Würfel zuvor gedreht habe und das ist das Problem. Z.B.
  • Ich habe auf Vector.right gedreht -> normales Verhalten -> der Würfel dreht sich vorwärts/rückwärts
  • Jetzt habe ich auf Vector.up drehen. -> der Würfel dreht sich nun nicht mehr nach links/rechts, sondern um die globale Vector.forward-Achse
Image

Top