2015-09-27 81 views
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(); 

回答

0

如果子彈已經移動到右邊的代碼,並且要讓它動起來,而不是嘗試SetVelocity。它將直接改變它的速度,而不是ApplyImpulse,它試圖使它看起來逼真。

+0

子彈在開始時並沒有移動,我想先設置子彈向一個方向看(例如頂部或右上角),然後爲子彈向前移動施加力。因此,如果子彈向上看,子彈移動到頂部,或者如果子彈向右看,子彈向那個方向前進 –

+0

那麼我不明白你的問題;只需通過ApplyLinearImpulse其他參數使其沿您想要的方向移動即可。請注意,「ApplyLinearImpule」的第一個參數與世界相關,而不是對象的旋轉。所以如果你傳遞一個指向右邊的矢量,它總是會向右移動,而不管你身體的旋轉。 簡而言之:你必須跟蹤自己的旋轉,並應用正確的矢量衝動。這是否回答你的問題? – Ludwik