【问题标题】:How to restore b2Body state after collision?碰撞后如何恢复 b2Body 状态?
【发布时间】:2012-06-16 07:19:55
【问题描述】:

我有 2 个身体。 碰撞后第二个身体消失,而第一个必须像碰撞前一样继续它的移动。 p>

现在的样子:

1) 我在 contactListener::BeginContact(..) { }; 中检测到冲突;

2) 保存第二个要删除的物体,第一个恢复它的速度和角度。

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 );
...
}

结果第一个物体向同一方向移动,但它像碰撞后一样旋转

【问题讨论】:

    标签: objective-c ios box2d


    【解决方案1】:

    当两个物体发生碰撞时,你可以在碰撞监听器的 PreSolve 中做 contact->SetEnabled(false) 来取消默认的碰撞响应。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-18
      • 2010-10-25
      • 1970-01-01
      相关资源
      最近更新 更多