如何调整Rigidbody设置降低物体间碰撞冲击力
Rigidbody碰撞击飞效果弱化的参数调整方案
碰撞后物体被异常击飞,本质是物理引擎碰撞解算时生成了过大的瞬时冲量,调整以下Rigidbody参数即可大幅弱化碰撞作用效果:
- 质量(Mass):适当调高易被击飞物体的Mass值,尽量将两个碰撞物体的质量差控制在10:1以内,避免质量差过于悬殊导致冲量传递被放大。不要将质量拉到极端大值,否则会触发穿模、物理休眠异常等问题。
- 阻力(Drag)、角阻力(Angular Drag):按需调高两个参数,Drag会衰减物体受碰撞后的线性移动速度,Angular Drag会衰减碰撞带来的旋转速度。常规弱化场景下可将Drag设为5~20、Angular Drag设为10~30,再根据实际表现微调即可,调高后物体不会出现被撞后飞出去老远、持续旋转的情况。
- 碰撞检测模式(Collision Detection):如果是高速移动物体碰撞引发的异常击飞,不要使用默认的
Discrete(离散检测)模式,切换为Continuous Dynamic(连续动态检测)即可。这类异常击飞大多是离散检测精度不足,导致物体碰撞时卡入对方碰撞体内部,引擎为了强制分离两个物体施加了异常大的瞬时推力。 - 插值(Interpolate):将参数设置为
Interpolate,可以平滑物理帧与渲染帧不同步导致的位置跳变,视觉上也能弱化碰撞时突兀的弹飞感。 - 重力缩放(Gravity Scale):2D项目的Rigidbody2D组件可适当调高该值,让物体被撞后不会飞出过高高度,更快落回地面,弱化击飞观感。
额外调整提示:如果上述参数调整后仍存在异常击飞,可打开项目物理设置面板调高
Default Solver Iterations(物理解算迭代次数),从默认的6调整到10~15,提升碰撞解算精度即可减少异常冲量的生成。如果完全不需要碰撞产生的物理推动效果,可直接将对应碰撞体设为触发器(Is Trigger),或通过脚本在碰撞回调中重置物体速度即可。
内容的提问来源于stack exchange,提问作者Vika
相关产品推荐
相关产品推荐

