对于unity新手来说,抖动可能是直接更改物体的position所导致的,但这和碰撞检测以及函数执行顺序有关,而且测试时能看到明显的上下或者左右平移再返回正确的位置。此时的解决情况是调用Rigidbody的MovePosition来移动,而非直接更改当前物体transform的position。
我遇到的问题是在安装unity插件Cinemachine后产生的,我使用这个插件制作虚拟相机来跟随人物移动。
与上述不同,它的抖动属于一下一下,较为细微的卡顿,只要移动,抖动就存在,非常像最初我尝试在FixedUpdate函数中移动人物的效果。于是我尝试直接给实际相机挂了个脚本,在Update函数中通过人物移动的相对偏移量来移动相机,这次没有问题了。
我猜想是Cinemachine对相机的移动本身就是在FixedUpdate中执行的。
不过似乎在给人物加上动画以后这个问题会变得非常容易被忽略,大家如果依旧想用这个好用的插件,大概也不算太大的问题。