投掷box2d的标枪物理

时间:2018-01-21 09:24:31

标签: libgdx box2d

我试图使用box2d在libgdx中制作标枪投掷游戏,但是使用box2d的物理特性,标枪完全抛出并且不在其头部。 我试过应用角度冲动,但是我尝试过的每一个公式,它仍然不是真正的外观。 box2d中有什么东西可以解决这个问题吗?

private void throwJavelin() {
    PolygonShape rect = new PolygonShape();
    rect.setAsBox(1.5f,0.05f);

    BodyDef bd = new BodyDef();
    bd.type = BodyDef.BodyType.DynamicBody;
    Body javelin = world.createBody(bd);
    javelin.setUserData("javelin");
    javelin.setTransform(firingPos, angle);
    javelin.createFixture(rect,1);
    float velX = -( -MathUtils.cos(angle) * (strength/4));
    float velY = -( -MathUtils.sin(angle) * (strength/4));
    javelin.setLinearVelocity(velX, velY);

    float omega = -3/strength;
    javelin.applyAngularImpulse(omega, true);
}

2 个答案:

答案 0 :(得分:0)

由于标枪的角度受到阻力/空气摩擦的影响而且box2d无法处理阻力,因此您必须提出一些解决方法。如果您在每个步骤中设置相对于速度矢量的角度,它看起来自然吗?

答案 1 :(得分:0)

an online tutorial by iforce2d that explains how to do what you're asking。我建议退房。

结果看起来也是a video demonstration,我发现它也很有用并建议退房。