我在box2d iPhone应用程序中的一个对象中应用impulse,现在想要在特定方向上提高它的速度....我的意思是我需要两件事
1.通过一个方向的对象 2.提高速度
plz help ..
答案 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);
通过修改xAcceleration
和yAcceleration
,您可以使对象以不同的方向以不同的方向移动。 (如果计算角度,可能需要使用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);
}