I am trying to understand why I have to do the ‘transform.Rotate(0.0f,90.0f,90.0f);’ in order for plane to have its flat side face the camera. If I don’t have this line of code the plane is at edge to the camera with its flat side facing up. is this normal?
I am using a Unity plane gameobject with the script above attached as a prefab.
.
When you create a plane initially, you might notice that it faces upward. Select it, set your transform controls to Local <You can find an example here under Menu Bar> and rotate the plane. The plane object’s local coordinates are such that X (right/left) and Z (forward/backward) are along its face and Y (up/down) is perpendicular, on the plane’s normal.
transform.LookAt() orients the forward direction towards your target. In this case, on the plane, that is along its edge. Therefore, in order to get it to face forward, it needs to be rotated on its local X-axis 90 degrees.
Why, then, does rotating 90 degrees on both Y-axis and Z-axis work, then? Rotations are local to the object and additive. You’re turning it in a quarter-circle on its Y-axis (top down), then on its Z-axis (back to front), which is facing to the side after the Y-axis rotation. This is similar to, but not the same as rotating on the X-axis, because it results in different sides of the plane at the top and bottom.
There’s nothing unusual about this behavior. For any object, it can be very important to know which side faces in which direction.