【问题标题】:Box2D how to determine the point when calling ApplyForce function to an objectBox2D如何在对对象调用ApplyForce函数时确定点
【发布时间】:2016-01-05 02:11:30
【问题描述】:

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

参考文档here,调用b2Body::ApplyForce(const b2Vec2 & force, const b2Vec2 & point)时需要输入2个参数。我知道力的作用是什么,但使用的点是什么以及如何确定它?

在我的情况下,如果用户选择了 10N 力和 45 度(360 度之外)的射击度,我如何将 45 度值转换为代码中的point 参数?我不确定 point 参数是如何工作的,也找不到任何文档或参考。非常感谢任何参考或指导。

【问题讨论】:

    标签: c++ box2d


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-28
      • 1970-01-01
      相关资源
      最近更新 更多