我正在使用box2d开发Java游戏,这是我的直升机,例如:



我通过设置来减少重力:

body.setGravityScale(0.03f);


因此它的行为有点逼真(受重力的影响很小,漂浮在空中)

要移动它,请向左/向右/向右移动控制器,这就是我控制直升机的方式:

body.applyLinearImpulse(new Vector2(pValueX * 3, pValueY * 3), mainBody.getWorldCenter());


其中pValueX和pValueY为1或-1(左/右上/下方向)

它的效果很好,但是现在我试图实现更逼真的效果,当左右移动直升机时,我想稍微倾斜一下,使其像真实的直升机一样工作,但是找不到正确的方法,所以我尝试了力作用在身体的不同部位,但是如果持续向左或向右按​​压,会使我的直升机旋转360度。

最佳答案

这个问题很旧,但是如果仍然有用,我使用JBox2D(几乎直接映射到Box2D)创建了直升机。左右倾斜(即相对于飞行员向前/向后倾斜):-

heli.applyTorque(TURN_TORQUE);


要么

heli.applyTorque(-TURN_TORQUE);


这会旋转直升机,然后如果玩家想举起直升机:

Vec2 force = new Vec2();
force.y = (float)Math.cos(chopper.getAngle()) * -1;
force.x = (float)Math.sin(chopper.getAngle());
force.mulLocal(ROTOR_FORCE);
heli.applyForceToCenter(force);

08-06 07:18