我正在制作一个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框架时,最好使用本机工具。
如果您将敌人和玩家的位置存储在Vector2s中,则可以进行一些方便的计算。例如,确定特定敌人和玩家之间的角度:
Vector2
Vector2 enemyPos; Vector2 playerPos; Vector2 temp; float angle = temp .set(playerPos) .sub(enemyPos) .angle();
这将完全给您您想要的。当然,最好将temp矢量保存在公共空间中的某个地方,以便在众多的计算中使用它。您最好检查其他方便的Vector2方法,这将严重减轻您的生活。
temp
祝好运。