Unity 控制物体旋转、朝向的一些方法
1,transform. Lookat( )
transform.Lookat(target.position);
1
立即看向target的位置, 很生硬.
2,Quaternion.LookRotation( )
transform.rotation = transform.LookRotation(target.position - self.position);
1
也是,立即看向target的位置。
3,Quaternion.RotateTowards( )
Quaternion q = Quaternion.LookRotation(target.position - self.position);
Quaternion.RotateTowards(self.rotation, q, turnSpeed * Time.deltaTime);
12
匀速转向target的位置。(匀速转过去, 虽然不那么生硬了, 但是还不够自然)
4,Quaternion.Slerp( )
Quaternion q = Quaternion.LookRotation(target.position - self.position);
Quaternion.Slerp(self.rotation, q, turnSpeed * Time.deltaTime);
12
非匀速转向target的位置。(人物转向看起来比较合理, 比较自然了)
5,transform.Rotate ( )
transform.rotate(Vector3.up, Space.Self);
1
地球自转。
6,transform.RotateAround( )
transform.rotateAround(sun.position, Vector3.up, turnSpeed * Time.deltaTime);
1
绕太阳公转。
7, transform.DORotate()
transform.DORotate(new Vector3(0,60,0), 0.3f);
1
0.3秒转到(0,60,0);Rotation
DOTween的, 注意他的参数是个三元数, 要是想与另一个物体的朝向一致, 就:
transform.DORotate(other.transform.eulerAngles, 0.3f);
1
8, transform.DOLookAt()
transform.DOLookAt(other.transform, 0.3f)
1
还是DOTween的, 和transform.LookAt差不多, 设置个时间, 能达到lerp的效果, 还能在后面.SetEase(Ease.XXX);
加一些运动曲线