Rotation

Rotation Algorithm

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);

加一些运动曲线

Motion State

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值