Hi,
first of all I know that transform.forward is literally the solution for my question, but:
I´m going to write a test on linear algebra and want to get an in-depth understanding who to calculate it on my own.
So I want to move an object constantly on it´s local z-axis forward and rotate it, to steer its direction of movement. Who would I calculate the z-axis movement?
Thanks in advance!
Given an objects rotation, you can calculate the forward vector like so:
**
Vx = 2 * (x*z + w*y)
Vy = 2 * (y*z - w*x)
Vz = 1 - 2 * (x*x + y*y)
**
With Vx, Vy, and Vz being the components of the forward direction along each of the cardinal axis and w, x, y, z being the Quaternion’s internal values - so in code
Quaternion r = transform.rotation;
float xComp = 2*(r.x*r.z + r.w*r.y);
float yComp = 2*(r.y*r.z + r.w*r.x);
float zComp = 2*(r.x*r.x + r.y*r.y);
Vector3 forward = new Vector3(xComp,yComp,zComp);
However this is maybe not what you are looking for. If you want to instead use the euler angles, you could take the x and y rotations and apply it to a forward vector:
**
- Take global z axis vector and the global y axis vector
- Rotate both about the global x axis by rotation.eulerAngles.x
- Rotate the new z vector about the new y vector by rotation.eulerAngles.y
- Resulting z vector is your forward vector