Box2d:在一个方向上应用速度

3
我在box2d iPhone应用程序中对一个物体施加了冲量,现在想要增加它在特定方向上的速度...我的意思是我需要两件事情:
1.将物体朝一个方向移动 2.增加速度
请帮忙。
2个回答

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();然后乘以速度。)

非常感谢......你能给我提供一下Box2D iPhone最好的书籍链接吗?我想买一本。 - Rony
但是我有另一个问题... 我认为在上面的代码中,p是力的方向... 对吗? 那么,如果我想将它定向在X或-X轴或Y-Y轴上,怎么办? - Rony
请查看以下链接:http://stackoverflow.com/questions/3385056/box2dgradually-increase-velocity-problem - Rony

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);
}

2
如果您添加一些解释,那么您可以改进这个。 - user195488

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接