0

動いているb2bodyがあります。私が望むのは、現在のベクトルがどのようなものであっても、体を特定の位置に移動し、その位置で体を停止することです。

2点間のベクトルを計算してからApplyLinearImpulse、新しいベクトルで実行しようとしましたが、正しい位置で停止できないようです。これが私がこれまでに試したことです。

-(void) moveBodyToPoint {
    ball.body->SetLinearVelocity(b2Vec2(0,0)); // set to zero before applying the impulse
    CGPoint vec = CGPointMake(ball.position.x-point.position.x,ball.position.y-point.position.y);
    ball.body->ApplyLinearImpulse(b2Vec2(vec.x,vec.y), ball.body->GetWorldCenter());
}
4

1 に答える 1

1

テレポーターをシミュレートするためにゲームで使用するのは、次のようなものです。

ball.body->SetLinearVelocity( b2Vec2(0, 0) );
ball.body->SetTransform( destination, body.bBody.GetAngle() ); //destination I dont think require explaining
ball.body->SetAngularVelocity( 0 ); //might not need that, dependant on what you are doing

SetTransform を呼び出すには、box2d ワールド ステップの外で行う必要があることに注意してください。

于 2013-09-01T19:03:36.673 に答える