之所以会发生颤抖现象,是因为刚体向前移动,刚体身上的碰撞器与其他碰撞起发生了交叉(也就是碰撞器进入另外一个碰撞器内部),然后中下一帧被物理引擎修正到未碰上(逐帧调试可发现这一点,默认是修正为两个碰撞器距离0.01,这个值在 Edit/Project Settings/Physics里面的Default Contact offset)。 修正后,你没判断是否可以继续向前移动,然后又导致两个碰撞器交叉。然后又中下一帧修正。再播放运行模式下看起来就是颤抖了。 知道了问题所在,要解决这个问题就简单了。只要判断出不能再次向前的了,那么不继续向着那个方向移动就行了。 至于方法的话就比较多种方式了,举个简单的例子:移动之前发射射线,判断是否可走。 不过射线的代价有点大,不建议同一帧发射太多射线。 相对来说我个人更热衷于用触发器替代射线,至于触发器的摆放位置、以及大小等,这个就只能根据你的项目需求自行调整了。
2,543
社区成员
2,142
社区内容
加载中
Unity3D社区公告:
试试用AI创作助手写篇文章吧