Transform.LookAt 注视
function LookAt (target : Transform, worldUp : Vector3 = Vector3.up) : void
旋转物体,这样向前向量指向target的当前位置。简单说,
旋转物体使z轴指向目标物体。
第一个参数是物体看向的目标。第二个参数是物体的那一个轴向看向目标。
很容易出现的问题就是,给一个人物模型设置LookAt,结果人物的脚底板对着目标。。
这时设置第二个参数,就可以让人物正面,面向目标。
在由worldUp向量示意的方向的y轴旋转物体,如果你忽略worldUp参数,这个函数将使用世界的y轴。worldUp只是一个示意向量,如果向前方向是与worldUp垂直的,旋转的向上向量将仅匹配worldUp向量。
翻译的感觉很别扭,下面是我的经验总结:
当该物体设置了LookAt并指定了目标物体时,该物体的z轴将始终指向目标物体,在设置了worldUp轴向时,该物体在更接近指定的轴向是旋转便的灵活,注意worldUp指的是世界空间,不论你物体在什么位置,只要接近指定的轴方向,旋转会变的更灵活。
一个朝向摄像机的应用,由于摄像机位置大部分位于高处,物体LookAt摄像机则物体会向上仰,这可能不是我们想要的效果,解决方法可以是:
public class LookAtIgnoreY : MonoBehaviour { // Use this for initialization
void Start () {
Vector3 pos = new Vector3(Camera.mainCamera.transform.position.x, transform.position.y, Camera.mainCamera.transform.position.z);//虚拟摄像机位置,即目标位置为摄像机位置的Y轴高度为物体高度
transform.LookAt(pos);
} // Update is called once per frame
void Update () { }
}