尽管在LibGDX中旋转相机,如何在固定方向上移动玩家?

时间:2017-03-15 23:58:28

标签: java android camera libgdx

我在LibGDX制作2D游戏,玩家移动系统非常简单:

if (Gdx.input.isKeyPressed(Input.Keys.W))
       player.setPosition(player.getPosition().x, player.getPosition().y + 100 * delta);

A,S和D键的原理相同。

但现在,我有一个“醉酒模式” - 因此,世界上有一个相机旋转,所以只是:

camera.rotate(MathUtils.random(-50, 50) * delta);

但如果我在相机旋转时按下W键,则播放器不再向上直线移动。因此,如果轮换是例如180°,玩家直接向下移动,这实际上非常符合逻辑。

那么有什么方法可以让玩家始终向上移动,按下W时向上移动,向右移动按D等等,无论当前的旋转是什么?

提前谢谢

2 个答案:

答案 0 :(得分:0)

尝试在同一方向上使用播放器上的偏差。

final int PLAYER_SPEED = 100;
float angle = MathUtils.random(-50, 50) * delta; // btw, delta is Gdx.graphics.getDeltaTime()?
camera.rotate(angle);
if (Gdx.input.isKeyPressed(Input.Keys.W)) {
    float xOffset = PLAYER_SPEED * sin(toRadians(angle)) * delta;
    float yOffset = PLAYER_SPEED * cos(toRadians(angle)) * delta;
    player.setPosition(player.getPosition().x + xOffset, player.getPosition().y + yOffset);
}

对于其他方向,必须有其他三角公式。

答案 1 :(得分:0)

5tingr4y的解决方案对我有用。

所以,我刚刚创建了一个向量并将其向相反方向旋转。然后,我用那个Vector移动玩家。