ARKit中如何不修改子弹作用力控制碰撞后球体的移动与滚动速度
你可以通过调整ball.physicsBody的以下几个属性实现需求,不需要修改子弹的冲量参数:
- 限制最大速度:设置
velocityLimit控制球体的最大移动线速度,angularVelocityLimit控制球体的最大滚动角速度,不管碰撞冲击力多大,球体的速度都不会超过你设定的阈值,是最直接的控制方案:
// 限制球体最大移动速度,单位是m/s,根据你的场景调整数值 ball.physicsBody?.velocityLimit = 2.0 // 限制球体最大滚动角速度,单位是rad/s ball.physicsBody?.angularVelocityLimit = 1.0
- 调整阻尼参数,控制速度衰减速度:
// 线性阻尼,控制移动速度的衰减,取值范围0~1,值越大移动减速越快 ball.physicsBody?.damping = 0.7 // 角阻尼,控制滚动速度的衰减,取值范围0~1,值越大滚动减速越快 ball.physicsBody?.angularDamping = 0.8
- 调整恢复系数,降低碰撞反弹带来的额外速度:
// 恢复系数,取值范围0~1,0表示完全不反弹,1表示完全弹性碰撞 ball.physicsBody?.restitution = 0.1
你可以根据自己的场景效果组合调整以上几个参数,就能在保留子弹飞行速度的前提下,控制球体被撞击后的移动和滚动表现。
内容的提问来源于stack exchange,提问作者hui
相关产品推荐
相关产品推荐

