使A物体慢慢地看向一个B物体

来源:互联网 发布:中国移动暂停数据流量 编辑:程序博客网 时间:2024/04/27 02:53

这是些常用的方法,希望没有侵犯他人版权

方法一:使用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);
0 0
原创粉丝点击