java - 根据玩家位置旋转纹理

标签 java libgdx

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

敌人的飞船会旋转,但它们并不总是面向玩家: enter image description here

最佳答案

@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/

相关文章:

java - 带有额外信息的 Bean 验证

android - Firebase 云消息传递 Java 客户端

java - libgdx 进展更快?

android - 如何检测触摸何时被释放?

java - 如何在 Android 应用程序中阻止或改善横向 View

java - 尝试创建自定义参数匹配器时出现 org.mockito.exceptions.misusing.InvalidUseOfMatchersException

java - 从 Java 集合中提取数据

java - 如何通过 "Global default typing"在 Jackson 中启用 "jackson2ObjectMapperBuilder"

java - 我应该如何在游戏中绘制这个?

java - 使用 LibGDX 加载 .png 文件时出现问题