OpenGL - 2D敌人不旋转面对玩家

OpenGL - 2D enemy not rotating to face player

我正在创建一个 2D 游戏,目前我正在尝试旋转我的敌人,以便在我的玩家移动时它始终面向我的玩家。我正在使用点积来计算角度,然后旋转敌人,但它不起作用。以下是我计算角度的方法...

//calculating the angle
float numerator = (player.x*enemy.x)+(player.y*enemy.y);
float denominator = sqrt((player.x*player.x)+(player.y*player.y))*sqrt((enemy.x*enemy.x)+(enemy.y*enemy.y));
float angle = acos(numerator/denominator);

这也在更新函数中重新计算。

下面是我如何显示我的敌人...

glPushMatrix();
    glTranslatef(enemy.x, enemy.y, 0);
     glRotatef(angle,0,0,1);
     glTranslatef(-enemy.x, -enemy.y, 0);
     enemy.drawCircle(enemy.x,enemy.y, enemy.radius);
glPopMatrix();

我哪里错了?

我认为你的几何公式​​有误。你实际上发现了敌人的矢量和玩家的矢量之间的角度。

您可能需要的是它们的差向量的角度

double dx = enemy.x - player.x;
double dy = enemy.y - player.y;
double ang = atan2(dy, dx);