将移动的b2体移动到特定位置

时间:2013-08-30 19:01:56

标签: c++ ios cocos2d-iphone box2d

我有一个正在移动的b2体。我想要的是将身体移动到一个特定的位置,并将身体停在那个位置,无论它的当前向量是多少。

我尝试计算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());
}

1 个答案:

答案 0 :(得分: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世界步骤之外执行此操作。