我正在制作一款 2d 游戏,其中包括一架飞机通过导弹与宇宙飞船作战,我希望宇宙飞船根据玩家位置进行旋转,以便它们始终以“头”面向玩家。玩家可以在 y 和 x 方向上自由移动。 玩家和宇宙飞船有一个 Vector2 pos 变量,对应于它们的实际位置。 任何帮助将不胜感激。
这是我的(现在正在运行)代码:
public void render(SpriteBatch sb) {
Vector2 temp = new Vector2();
float angle = temp.set(entityManager.getPlayer().pos).sub(pos).angle();
TextureRegion region = new TextureRegion(texture);
sb.draw(region, pos.x, pos.y, 0, 0, texture.getWidth(), texture.getHeight(), 1.0f, 1.0f,angle+90);
}
敌人的飞船会旋转,但它们并不总是面向玩家:
最佳答案
@dwn 的答案在数学上是正确的,但是当您处理 LibGDX 框架时,最好使用 native 工具。
如果您将敌人和玩家的位置存储在 Vector2
中,那么您可以更方便地进行计算。
例如,要确定特定敌人和玩家之间的角度:
Vector2 enemyPos;
Vector2 playerPos;
Vector2 temp;
float angle = temp
.set(playerPos)
.sub(enemyPos)
.angle();
这将为您提供您想要的东西。当然,最好将 temp
vector 保存在公共(public)空间的某个位置,以便在如此众多的计算中使用它。你最好检查一下其他方便的Vector2
方法,它会极大地方便你的生活。
祝你好运。
关于java - 根据玩家位置旋转纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27671908/