box2d中的脉冲数是多少像素

时间:2011-09-21 03:03:19

标签: iphone box2d game-physics box2d-iphone vimpulse

我有一个球,你用空气吹。如果球靠近鼓风机,我想让球吹得更多,如果距离鼓风机更远,则吹得更少。我正在使用box2d而我正在使用脉冲函数。“body-> ApplyLinearImpulse(force,body-> GetPosition())”。我似乎无法找到一个公式或方法来实现这一目标。如果我想要将球吹向300像素的总距离,我怎么能做到这一点?请帮忙。

3 个答案:

答案 0 :(得分:1)

如果你想在模拟前计算距离,你必须看看box2d来源。当模拟身体的速度根据重力,额外施加的力,线性阻尼,角阻尼和可能更多的东西进行修改。速度也依赖于速度迭代。

但我想如果你想要一个非常平滑的动作(比如一击),你最好使用applyForce函数而不是impulse。但是请确保你在每个模拟步骤中施加力。

修改

您还可以模拟空气阻力: Fa = -k * V * V.我用这种方式模拟了管道中的运动。工作得很好。

所以每一步你都可以做这样的事情:

BlowForce = k1 / distance; // k1 - coefficient
Resistance = -k2 * V * V; //k2 - another coefficient
TotalForce = BlowForce + Resistance;
body->ApplyForce(TotalForce);

答案 1 :(得分:0)

我不是一个盒子专家,但我要做的是创造一个实际上看不见的小盒子让球击中盒子......如果鼓风机吹得更多,我会给对面的盒子提供更多的速度方向。就300像素长度而言,你必须调整力和速度,以使球变为

300/<your_rendering_window_to_physics_world_ratio>

在物质世界中。

答案 2 :(得分:-1)

力=质量*加速度,所以取你设定身体的质量,计算你想要的加速度(记得用PTM_RATIO划分300px),然后将两者相乘。