Box2D如何确定调用ApplyForce函数到对象

时间:2016-01-04 17:58:12

标签: c++ box2d

我正在使用Box2D做一个简单的射击游戏,用户需要选择角度和力量来射击球并击中某些东西。 (与“愤怒的小鸟”类似)。我的球的初始位置是静态的,玩家可以选择射击角度以及力量。为此,我正在调用ApplyForce函数。

如文档here所述,我们需要在调用b2Body::ApplyForce(const b2Vec2 & force, const b2Vec2 & point)时输入2个参数。我理解的力量是什么,但是用于什么以及如何确定它?

在我的情况下,如果用户选择了10N力和45度(超过360度)的拍摄度,如何将45度值转换为代码中的point参数?我不确定点参数如何工作,我找不到任何文档或引用它。任何参考或指导都非常感谢。

1 个答案:

答案 0 :(得分:1)

我认为您错误地理解了point参数。点参数不代表力的方向。相反,您可以在b2Vec2 force中指定力的方向。

如果你想将力量施加到特定的程度(在你的情况下,45),你可以这样做。

yourForce = b2Vec2(cos(yourAngle) * magnitude , sin(yourAngle) * magnitude);

然后按照你提到的那样调用ApplyForce函数

yourObject->ApplyForce(yourForce, yourObject->GetPosition());