0
我正在製作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();
子彈在開始時並沒有移動,我想先設置子彈向一個方向看(例如頂部或右上角),然後爲子彈向前移動施加力。因此,如果子彈向上看,子彈移動到頂部,或者如果子彈向右看,子彈向那個方向前進 –
那麼我不明白你的問題;只需通過ApplyLinearImpulse其他參數使其沿您想要的方向移動即可。請注意,「ApplyLinearImpule」的第一個參數與世界相關,而不是對象的旋轉。所以如果你傳遞一個指向右邊的矢量,它總是會向右移動,而不管你身體的旋轉。 簡而言之:你必須跟蹤自己的旋轉,並應用正確的矢量衝動。這是否回答你的問題? – Ludwik