我正在用GDX和Box2D制作太空射击水平滚动式游戏。我无法弄清楚子弹如何向前移动,这取决于朝哪个方向看。例如,如果子弹向右看,我使用applyLinearImpulse,但如果子弹向上看,它就不起作用,它会一直向右移动。
以下是项目符号对象的代码
BodyDef bd = new BodyDef();
bd.bullet = true;
bd.fixedRotation = true;
bd.position.set(v);
bd.type = BodyType.KinematicBody;
bd.fixedRotation = true;
CircleShape circle = new CircleShape();
circle.setRadius(SIZE);
FixtureDef fd = new FixtureDef();
fd.shape = circle;
fd.isSensor = true;
World world = Game.level.getWorld();
body = world.createBody(bd);
@SuppressWarnings("unused")
Fixture fixture = body.createFixture(fd);
body.setTransform(body.getPosition(), magnitude);
body.setLinearVelocity(SPEED, 0);
circle.dispose();
答案 0 :(得分:0)
如果子弹已经向右移动,而你想让它向上移动,请尝试SetVelocity
。它将直接改变其速度,而不是ApplyImpulse,它试图使它看起来很逼真。