- Home /
look at script for a plane and what I might be doing wrong
I want to display a plane and have its flat side face the camera at all times.
I attached a script to the plane as follows:
public class C_faceCamera : MonoBehaviour {
GameObject objectToFace;
void Start()
{
objectToFace = Camera.main.gameObject;
}
void FixedUpdate()
{
transform.LookAt (objectToFace.transform);
transform.Rotate(0.0f,90.0f,90.0f);
}
}
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. .
Answer by Eno-Khaon · Sep 14, 2015 at 04:37 AM
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.
Your answer
Follow this Question
Related Questions
When moving camera I like my circle Plane look at cam. 0 Answers
Make Prefab Look At Target 2 Answers
How to execute the lookAt function here? 1 Answer
Camera follow in c# 1 Answer
Is this an efficient way of changing a material by script? 0 Answers