Box2D教程1-创建碰撞世界 Box2D教程2-鼠标交互 Box2D教程3-刚体绑定外观 Box2D教程4-复杂刚体的复杂外观 Box2D教程5-碰撞检测 源码下载 ![]() 两个物体产生碰撞的时候,除了检测是否碰撞了,很多时候我们需要知道碰撞强度有多大,比如愤怒的小鸟,要根据碰撞的强度决定是否消去障碍物。这一个教程解释如何获取碰撞强度。 碰撞的强度在物理上用冲量(Impluse)表示,在经典力学里,冲量等于物体动量的变化。 冲量公式 I = Ft (单位 N*s) 如果有恒力F,作用在质量为m、静止的物体上,经过时间t,会产生什么效果呢?由Ft=mat=mv看出,力与时间的乘积Ft越大,静止的物体获得的速度v就越大;Ft越小,物体的速度就越小。 冲量是矢量 冲量的方向由力的方向确定。如果在力的作用时间内,力的方向保持不变,则力的方向就是冲量的方向。 冲量与动量的关系 运动物体的质量和速度的乘积叫动量,p=mv,国际单位是千克米每秒。 在恒力F作用下,质量为m的物体在时间t内,速度由v变化到v′。根据牛顿第二定律,有F=ma式中F为物体所受外力的合力。等式两边同乘时间t,Ft=mat=mv′-mv,因此I=p′-p 总结说,质量一定的物体碰撞之后获取的速度可以用来衡量碰撞强度,其取决于碰撞力与时间的乘积,及冲量。因此box2D中,我们要判断碰撞强度,需要获取碰撞时的冲量,而box2D已经为你提供了方便的获取方式。具体获取方法如下。 在教程五中我们已经说明了如何进行碰撞检测。创建自定义的CustomContactListener,覆盖其中的BeginContact和EndContact来获取碰撞开始和碰撞结束。而获取碰撞冲量,这时需要覆盖另外一个方法PostSolve(contact:b2Contact, impulse:b2ContactImpulse),我们看到此方法有两个参数
在这个教程中,覆盖PostSolve方法抛出碰撞事件,携带冲量数组作为参数,在主程序侦听此事件,输出冲量数值。 CustomContactListener.as覆盖PostSolve方法 碰撞事件CollisionEvent.as 在主程序中侦听输出 |
box2d 获得碰撞冲量
最新推荐文章于 2019-06-14 09:30:23 发布