我刚刚开始使用box2d,我试图制作一个火箭(现在的矩形)飞,它只是在游戏开始时垂直站立,我想从底部施加力矩形,因为它是引擎所在的位置,也是矩形所面向的方向。 我试过这个
body.applyLinearImpulse(getUserData().getBoosterLinearImpulse(), new Vector2(body.getWorldCenter().x, body.getWorldCenter().y - Constants.ROCKET_HEIGHT), true);
这是在按下屏幕右下角时执行的方法。它仅在矩形静止时起作用。 我显然不知道自己在做什么。 我还有另一个问题:applyLineairForce和applyForce之间的区别是什么,以及如何最好地学习使用box2d,因为我觉得它不容易(这不是问题)?
答案 0 :(得分:0)
如果我理解这一点你想知道applyLinearImpulse和applyForce之间的区别。冲动是一次性的力量应用,通常用于游戏中的跳跃,而力量则是每帧用来增加汽车速度的力量。
为了让你对火箭施加力,你可以使用这样的东西:
// gets x force based on angle
float x = (float)Math.sin(body.getAngle() - Math.PI); // minus PI as objects start off facing right
// gets y force based on angle
float y = (float)Math.cos(body.getAngle());
//apply force to center (applies force to middle so no rotation )
//body.applyForceToCenter( new Vector2(
// body.getMass()* (x * 12),
// body.getMass()*(y*12)), true);
//NOTE: bodies must be set to .fixedRotation = false in order to rotate;
//apply force to a point on body (will create rotational force )
body.applyForce( new Vector2(
body.getMass()* (x * 12),//x force to apply
body.getMass()* (y * 12)), //y force to apply
// apply force to body at 0.5f(halfway for 1f wide object) x and -5 y
body.getWorldPoint(new Vector2(0.5f,-5)),true);