我正在使用andengine和box2d来生成像抛纸游戏。
我无法计算的是以下函数中第一个参数的正确向量,以使球以正确的速度和高度上升(想法是球的高度不超过屏幕的高度):
pelota_body.applyLinearImpulse(new Vector2(pointX, impulse), pelota_body.getWorldCenter());
在pointX中,我使用值
vectorXPoint-(CAMERA_WIDTH/2)
,它沿着手指绘制的矢量的方向移动,但是脉冲值我似乎无法正确理解,无论我使用什么值(大约400)在每个设备上都不同。 最佳答案
为了使身体在跌落之前达到高度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);
}
所以我要设定速度
关于android - 以角度和速度向小 Sprite 施加脉冲,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18467614/