碰撞后如何恢复b2Body状态?
我有2个机构。 碰撞后,第二个物体消失 , 第一个物体必须继续前进 ,就像碰撞前一样。
现在看起来如何:
1)我在contactListener :: BeginContact(..){}中检测到碰撞。
2)保存第二个物体删除,第一个恢复它的速度和angular度。
3)
-(void) update: (ccTime) dt { int32 velocityIterations = 8; int32 positionIterations = 1; _world->Step(dt, velocityIterations, positionIterations); ... world->DestroyBody(secondBody); firstBody->SetLinearVelocity(linearVelocityBeforeTouching); firstBody->SetTransform(firstBody->GetPosition(), angleBeforeTouching ); ... }
结果,第一个物体在同一个方向上移动,但是它在碰撞之后旋转
当两个物体碰撞时,可以在碰撞监听器的PreSolve中执行contact-> SetEnabled(false)来取消默认的碰撞响应。