开门见山:
将RigidBody的插值属性设置为interpolate
个人理解:
问题发生于当我在FixedUpdate中进行Rb.MovePosition移动时。
由于FixedUpdate是固定时间间隔执行的,因此在其中进行的运动实现(Transform的改变)也是间隔发生的,在高帧率的情况下,这种间隔能够被玩家明显感知。
此时便需要使用到RigidBody中的插值(Interpolate)属性,他能够在两次物理更新之间对物体的运动进行预测。Unity为此提供了两种方法Interpolate和Extrapolate。前者基于上一帧和当前帧的物理信息,后者则会基于对下一帧预测。
若想理解该段描述,可在Unity的项目设置中将FixedUpdate时间设置的大一些,然后令一个物体自由下落到地面。能够明显看到在使用了预测方法(Extrapolate)的情况下,物体下落运动的末尾会发生回弹的情况,即物体穿模并被瞬移到地面。而使用插值方法(Interpolate)却不会发生这种情况。
**使用插值会使物理运动失去随机性,尽管推测下来,这种随机性是由于帧数的变化而产生的,但这是值得注意的地方。
参考:
以及Unity官方手册
吐槽一下百度搜索的效率。。。基本上都是满满的复制粘贴还有驴头不对马嘴,而google一下立刻解决。当然,如果本篇没有解决你的问题,可能那些驴头恰好撞到了你的问题上,请多搜索吧!