小编典典

根据玩家位置旋转纹理

java

我正在制作一个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);
}

敌方飞船旋转,但它们并不总是面对玩家: 在此处输入图片说明


阅读 226

收藏
2020-11-30

共1个答案

小编典典

@dwn的答案在数学上是正确的,但是当您处理LibGDX框架时,最好使用本机工具。

如果您将敌人和玩家的位置存储在Vector2s中,则可以进行一些方便的计算。例如,确定特定敌人和玩家之间的角度:

Vector2 enemyPos;
Vector2 playerPos;
Vector2 temp;

float angle = temp
                .set(playerPos)
                .sub(enemyPos)
                .angle();

这将完全给您您想要的。当然,最好将temp矢量保存在公共空间中的某个地方,以便在众多的计算中使用它。您最好检查其他方便的Vector2方法,这将严重减轻您的生活。

祝好运。

2020-11-30