- Home /
 
 
               Question by 
               mrbru3 · Jun 05, 2019 at 07:43 PM · 
                rotationphysicsquaternionlookrotationrotatetowards  
              
 
              Rotate object towards another object without using the local Y axis
I have a spaceship and I want it to rotate towards another object but without using the local Y axis. I only want the ship to be able to tilt left and right(local Z axis) and rotate up and down(local X axis). I don't want the ship to rotate using the local Y (which is what it is currently doing).
Basically I want my ship to rotate like this:

NOT like this (which is what it is currently doing):

I am using this code:
             Quaternion desiredRotation = Quaternion.RotateTowards(transform.rotation, QuaternionLookRotation(otherObject.transform.position - transform.position, Vector3.forward), 180); //kinda messy but it does work except for the fact that its rotating on the wrong axis
 
             //magical code from http://digitalopus.ca/site/pd-controllers/
             float kp = (6f * frequency) * (6f * frequency) * 0.25f;
             float kd = 4.5f * frequency * damping;
             float dt = Time.fixedDeltaTime;
             float g = 1 / (1 + kd * dt + kp * dt * dt);
             float ksg = kp * g;
             float kdg = (kd + kp * dt) * g;
             Vector3 x;
             float xMag;
             Quaternion q = desiredRotation * Quaternion.Inverse(transform.rotation);
             q.ToAngleAxis(out xMag, out x);
             x.Normalize();
             x *= Mathf.Deg2Rad;
             Vector3 pidv = kp * x * xMag - kd * rb.angularVelocity;
             Quaternion rotInertia2World = rb.inertiaTensorRotation * transform.rotation;
             pidv = Quaternion.Inverse(rotInertia2World) * pidv;
             pidv.Scale(rb.inertiaTensor);
             pidv = rotInertia2World * pidv;
             rb.AddTorque(pidv);
 
               I'm pretty sure all I would have to do to make this work is to change what the desiredRotation variable is equal to. But I don't fully understand quaternions well enough and I've tried multiple possibilities. If anyone could help with this it would be greatly appeciated :)
 
                 
                ezgifcom-optimize-1.gif 
                (470.2 kB) 
               
 
                
                 
                ezgifcom-optimize-2.gif 
                (370.1 kB) 
               
 
              
               Comment
              
 
               
              Your answer