Java 在LibGDX中,如何在摄像机旋转的情况下沿固定方向移动播放器?
我用LibGDX制作了一个2D游戏,玩家移动系统非常简单:Java 在LibGDX中,如何在摄像机旋转的情况下沿固定方向移动播放器?,java,android,camera,libgdx,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) *
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时向右移动,等等,不管当前的旋转是什么
提前谢谢你试着在球员身上使用同一方向的偏差
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);
}
对于其他方向,必须有其他三角公式。尝试使用播放器在同一方向上的偏差
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);
}
对于其他方向,必须有其他三角公式。5tingr4y的解对我有用
所以,我只是创建了一个向量,并将其向相反方向旋转。然后,我用这个向量移动播放器。5tingr4y的解决方案对我有效 所以,我只是创建了一个向量,并将其向相反方向旋转。然后,我用这个向量移动播放器。使用一个向量(在你的例子中是[0,100],并以相反的方向旋转,然后用这个向量移动播放器使用一个向量(在你的例子中是[0,100],并以相反的方向旋转),然后用这个向量移动播放器