【问题标题】:How to move a player in a fixed direction despite camera rotation in LibGDX?尽管 LibGDX 中的相机旋转,如何将玩家移动到固定方向?
【发布时间】:2017-03-15 23:58:27
【问题描述】:

我在 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 时向右等,无论当前旋转是什么?

提前谢谢你

【问题讨论】:

  • 使用一个向量(在你的情况下是 [0, 100] 并将其向相反方向旋转,然后按该向量移动玩家

标签: java android camera libgdx


【解决方案1】:

尝试使用玩家在同一方向上的偏差。

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);
}

对于其他方向,肯定有其他三角公式。

【讨论】:

    【解决方案2】:

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

    所以,我只是创建了一个矢量并将其向相反方向旋转。然后,我通过该向量移动播放器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多