OpenGL - 2D敌人没有旋转到面对玩家

时间:2016-03-04 19:41:11

标签: c++ opengl rotation 2d transformation

我正在创建一个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();

我哪里错了?

1 个答案:

答案 0 :(得分:2)

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

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

` WITH MEMO AS (select MEMO_COMMENT FROM table) 
 select INSTR(MEMO, 'PD') AS PastDue`
 FROM table