这是些常用的方法,希望没有侵犯他人版权
方法一:使用unity的一个内置函数Transform.LookAt选择;
方法二:用到Vector3.Cross来确定一个垂直于两向量所组成平面的向量;
void CameraRotateToLookAt(Transform target,float rotateSpeed)
{
//取得目标物体相对于相机的法向量
Vector3 normalize = Vector3.Cross(myCamera.transform.forward,target.transform.position-myCamera.transform.position);
float angles = Vector3.Angle(myCamera.transform.position,target.transform.position);
//以该法向量为轴进行旋转
//具体参阅[Transform.Rotate](http://game.ceeger.com/Script/Transform/Transform.Rotate.html)
myCamera.transform.Rotate(normalize,Time.deltaTime*rotateSpeed,Space.Self);
Debug.Log(angles);
if(angles == 0)
{
rotateSpeed = 0;
}
}
方法三:四元数:
这个原理就是取得两个物体之间的相对法向量,然后相对该法向量进行旋转。不过还有一些其它办法可以实现,例如:
Quaternion rotation = Quaternion.LookRotation(target.position - transform.position);
transform.rotation = Quaternion.Slerp(transform.rotation,rotation,damping*Time.deltaTime);