You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

2D OpenGL生存射击项目中敌方跟随玩家旋转的角度计算问题

问题核心错误点

你现在的角度计算逻辑有三个明显问题:

  1. 朝向目标混淆:你需要敌方朝向玩家,不是朝向鼠标,计算时错误引入了cursorPos变量,应该直接取玩家的中心坐标计算
  2. 冗余常量干扰:角度计算仅和两个点的坐标差值有关,和方块尺寸没有关系,不需要乘50相关的常量
  3. 多余正负号嵌套:多重负号搞混了逻辑坐标系的Y轴方向,导致角度计算完全偏离预期

正确计算步骤

1. 确认对象中心坐标

从你提供的绘制代码可以直接得到两个角色的中心坐标:

  • 玩家中心:(translateX, translateY)(你代码里玩家平移的变量值)
  • 敌方中心:(translateEnemyX, translateEnemyY)(你现在代码里敌方写死的300/300要替换成这两个动态变量)

2. 计算方向向量差值

假设你使用的逻辑空间Y轴向上(和OpenGL默认2D坐标系一致),计算敌方指向玩家的向量:

float dx = translateX - translateEnemyX;
float dy = translateY - translateEnemyY;

3. 计算旋转角度

从你眼睛的绘制逻辑可以看出,角色模型默认朝向Y轴正方向,若你使用的Rotate函数参数为逆时针角度,直接用以下代码即可:

enemyAngle = atan2(dx, dy);

如果测试后发现敌方朝向完全相反,调整正负号即可:

enemyAngle = -atan2(dx, dy);

内容的提问来源于stack exchange,提问作者Catalin Ursu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 11:36:07