【问题标题】:Converting rotation degrees to Box2D impulse将旋转度数转换为 Box2D 脉冲
【发布时间】:2010-12-06 18:14:05
【问题描述】:

如果之前已经回答过这个问题,我深表歉意,但我无法完全找到我想要的东西。

我有一个 Box2D 动态物体,我应用线性脉冲将它变成一个弹丸。因此,当我单击屏幕上的任意位置时,我希望将身体投射到触摸位置。我不关心力,只关心角度。

我已经让我的精灵旋转以指向触摸位置,这样我就可以检测到初始旋转角度,但是我如何将这个角度(比如 45 度)转换为“b2Vec2”值,以便我可以在 45 处启动身体度?像这样:

float rotationValue = 45.0f;
b2Vec2 vect = ??????
b2Vec2 PointVector = body->GetPosition();
body->ApplyLinearImpulse(vect, PointVector);

任何线索将不胜感激。

谢谢

【问题讨论】:

    标签: cocos2d-iphone box2d box2d-iphone


    【解决方案1】:

    sigh - 这就是为什么你应该在数学课上注意的原因:)

    将角度转换为向量非常简单:

    float angle = 45.0f;
    b2Vec2 vect = b2Vec2(cos(angle), sin(angle));
    

    【讨论】:

    • 也许我错了,但你不需要在这里转换成弧度吗?
    • 应该是:cos(angle * PI/180)
    • 是的,当您使用 sin() 或 cos() 时,您必须转换为弧度。然而,在 45 度的特殊情况下,这非常容易。 vect = b2Vec2(1,1) :)
    猜你喜欢
    • 1970-01-01
    • 2015-09-02
    • 1970-01-01
    • 2020-08-23
    • 2014-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多