脉冲以角度和速度应用于精灵

时间:2013-08-27 14:01:37

标签: android box2d andengine physics

我正在使用andengine和box2d来生成像纸张折腾的游戏。 我无法计算的是下面函数中第一个参数的正确向量,使球以正确的速度和高度上升(这个想法是球的高度不超过屏幕高度):

pelota_body.applyLinearImpulse(new Vector2(pointX, impulse), pelota_body.getWorldCenter());

在pointX中我使用值vectorXPoint-(CAMERA_WIDTH/2)并且它朝向手指绘制的矢量方向,但是脉冲值I似乎无法正确使用我使用的任何值(aprox 400)在每个设备上工作不同。

1 个答案:

答案 0 :(得分:1)

为了让身体在跌倒前行进高度h,你需要它的初始垂直速度:

v_y = sqrt(2*g*h),其中g是重力加速度。

您可以根据此v_y或仅使用SetLinearVelocity方法计算冲动。

修改

//box2d source
inline void b2Body::ApplyLinearImpulse(const b2Vec2& impulse, const b2Vec2& point)
{
    if (m_type != b2_dynamicBody)
    {
        return;
    }

    if (IsAwake() == false)
    {
        SetAwake(true);
    }
    m_linearVelocity += m_invMass * impulse;
    m_angularVelocity += m_invI * b2Cross(point - m_sweep.c, impulse);
}

所以我只想设定速度