我正在使用Box2D做一个简单的射击游戏,用户需要选择角度和力量来射击球并击中某些东西。 (与“愤怒的小鸟”类似)。我的球的初始位置是静态的,玩家可以选择射击角度以及力量。为此,我正在调用ApplyForce
函数。
如文档here所述,我们需要在调用b2Body::ApplyForce(const b2Vec2 & force, const b2Vec2 & point)
时输入2个参数。我理解的力量是什么,但是用于什么以及如何确定它?
在我的情况下,如果用户选择了10N力和45度(超过360度)的拍摄度,如何将45度值转换为代码中的point
参数?我不确定点参数如何工作,我找不到任何文档或引用它。任何参考或指导都非常感谢。
答案 0 :(得分:1)
我认为您错误地理解了point
参数。点参数不代表力的方向。相反,您可以在b2Vec2 force
中指定力的方向。
如果你想将力量施加到特定的程度(在你的情况下,45),你可以这样做。
yourForce = b2Vec2(cos(yourAngle) * magnitude , sin(yourAngle) * magnitude);
然后按照你提到的那样调用ApplyForce函数
yourObject->ApplyForce(yourForce, yourObject->GetPosition());