Box2d:在一个方向上施加速度

时间:2010-08-01 13:39:23

标签: iphone objective-c cocos2d-iphone box2d

我在box2d iPhone应用程序中的一个对象中应用impulse,现在想要在特定方向上提高它的速度....我的意思是我需要两件事

1.通过一个方向的对象 2.提高速度

plz help ..

2 个答案:

答案 0 :(得分:2)

b2Vec2 force = b2Vec2(xAcceleration, yAcceleration);
force *= dt;  // Use this if your game engine uses an explicit time step
b2Vec2 p = myObjectBody->GetWorldPoint(b2Vec2(0.0f, 0.0f));
body->ApplyForce(force, p);

通过修改xAccelerationyAcceleration,您可以使对象以不同的方向以不同的方向移动。 (如果计算角度,可能需要使用force.Normalize();然后乘以速度。)

答案 1 :(得分:0)

b2Vec2 vector = self.speed * b2Vec2(cos(angle), sin(angle));
self.yourbodyBody->SetLinearVelocity(vector);
[self schedule:@selector(increaseSpeed) interval:0.1];

- (void)increaseSpeed
{
    self.speed += 0.01;
    float angle = self.yourbodyBody->GetAngle();
    b2Vec2 vector = self.speed * b2Vec2(cos(angle), sin(angle));
    self.yourbodyBody->SetLinearVelocity(vector);
}