我试图使用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);
}
答案 0 :(得分:0)
由于标枪的角度受到阻力/空气摩擦的影响而且box2d无法处理阻力,因此您必须提出一些解决方法。如果您在每个步骤中设置相对于速度矢量的角度,它看起来自然吗?
答案 1 :(得分:0)
有an online tutorial by iforce2d that explains how to do what you're asking。我建议退房。
结果看起来也是a video demonstration,我发现它也很有用并建议退房。