给刚体施加同一个力,为什么后一次弹出距离比前一次短?

场景里只有一个箱子和一个地块,当箱子因为重力下落和地块接触后给箱子一个弹力使得箱子弹起。
施加的弹力是相同的,可是箱子每次弹起的距离却不相同。第1,3,5。。。。次弹起的距离相同,第2,4,6.。次弹起的距离相同,并且第二次弹起的距离比第一次短。

// 只在两个碰撞体开始接触时被调用一次
onBeginContact: function (contact, selfCollider, otherCollider) {
var mass = this.rigidbody.getMass()
var gravity = cc.director.getPhysicsManager().gravity
var t = cc.v2( gravity.x* mass, -gravity.ymass50 )
this.addForce( this.rigidbody, t )

},


我断点试了第二次弹起时有调用onBeginContact()这样每次添加的力的大小应该是相同的啊,本来还以为第二次是直接弹起没有发生回调。

现在觉得是因为弹起时力首先需要让物体减速到零。这样前一次落地速度较快后一次弹起的较低,后一次落地速度较慢所以下一次弹起的就高。

落地是把速度置为零后每次弹起高度就相同了