libGDX子弹位置逻辑

时间:2015-02-15 05:03:38

标签: libgdx

我的游戏有一个更新方法,可以处理我的角色的火力。 我的问题是我的游戏的逻辑,子弹应该从我的角色的位置开始,在游戏开始时(不移动角色)火焰子弹来自角色的位置,但当我移动我的角色时子弹的开始位置与角色的位置不一样。

子弹的方向取决于玩家的方向。

private void update() {
    Vector2 direction = new Vector2(0, 0);


    if (Gdx.input.isKeyPressed(Keys.D)) {

        direction.x = 1f ;
    }
     if (Gdx.input.isKeyPressed(Keys.A)) {

        direction.x = -1f ;
    }
     if (Gdx.input.isKeyPressed(Keys.W)) {

        direction.y = 1f ;
    }
     if (Gdx.input.isKeyPressed(Keys.S)) {

        direction.y = -1f;
    }

    if (direction.x != 0 || direction.y != 0) {

        playerDirection.set(direction);
        System.out.println("player x: " +playerDirection.x + "\t" +"player y:"+playerDirection.y);
    }

    if (Gdx.input.isKeyPressed(Keys.F)) {
        bulletPos = new Vector2(startPos);
        bulletDirection.set(playerDirection);           
    }
    if (bulletPos != null) {
        bulletPos.x += direction.x;
        bulletPos.y +=direction.y;
        if (bulletPos.x < 0 || bulletPos.x > mapPixelWidth
                || bulletPos.y < 0 || bulletPos.y > mapPixelHeight) {
            bulletPos = null;

        }
    }


}

任何人都可以知道逻辑错误,或者任何人都可以提供射击方向的简单逻辑吗?

1 个答案:

答案 0 :(得分:0)

从我看到的,你总是从玩家开始位置(startPos)开始按钮,然后,当子弹移动时,你根据玩家的方向(direction.x,.y)更新它的位置?但是当玩家改变方向时,子弹也开始向其他方向移动。那是错的。

创建后,应始终独立于播放器移动子弹。所以当你创建它时,它必须有自己的开始位置(取自当前玩家位置)和自己的方向(基于当前玩家位置)。你的玩家移动不再能改变子弹位置。

类似的东西:

if (Gdx.input.isKeyPressed(Keys.F)) {
bulletPos.set(currentPlayerPosition);
bulletDirection.set(currentPlayerDirection);
}

//and then in update()
bulletPos.x+=bulletDirection.x;
bulletPos.y+=bulletDirection.y;
//until it goes out of screen, or passes given distance, 
//or new bullet is created, or whatever condition you like