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);
相关文章:
- 与互斥锁相比,旋转锁可以保证上下文切换
- 绘制旋转的三角形
- 旋转模型矩阵时的形状失真
- 四边形的 2D 旋转
- 垂直方向的 Gtk3+ 旋转按钮 (c/c++)
- 发布旋转矩阵(openGL/glm)
- 顺时针迭代旋转 3 位数字
- 形状对象的旋转和缩放不正确C++
- 如何在 OpenSceneGraph 中缩放/旋转/移动资产
- 如何有效地计算将单位立方体映射到自身的反射和旋转?
- 子轴围绕父轴而不是他自己的轴旋转
- 将使用太多的纹理插值器 - 带旋转的着色器
- SFML 向下移动时如何围绕屏幕中心旋转?
- 如何在OpenGL中正确旋转和缩放对象?
- 使用 C++在 OpenGL 中移动自动旋转的 3D 多边形
- 按时间自动旋转形状,同时在 OpenGL 中使用C++移动它们
- 如何使用增强::几何计算多边形的旋转固体体积?
- 旋转一个对象面对另一个C
- OpenGL - 2D敌人不旋转面对玩家
- OpenGL - 旋转玩家位置以面对鼠标指针