0

私は2つの体を持っています。それらが衝突した後、2 番目の物体は消え最初の物体は衝突前と同じように移動しなければなりません。

現在の外観:

1) contactListener::BeginContact(..) { }; で衝突を検出しました。

2) 削除する 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 );
...
}

その結果、最初のボディは同じ方向に移動しますが、衝突後のように回転します

4

1 に答える 1

1

2 つのボディが衝突すると、デフォルトの衝突応答をキャンセルするために、衝突リスナーの PreSolve で contact->SetEnabled(false) を実行できます。

于 2012-06-16T10:17:15.067 に答える