我正在使用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);