如何根据鼠标位置旋转精灵

How do you rotate a sprite based on mouse position?

本文关键字:旋转 精灵 位置 鼠标 何根      更新时间:2023-10-16

基本上,我有一个使用 SDL 2.0 渲染的精灵,我可以使用 SDL_RenderCopyEx() 顺时针围绕纹理的中心原点旋转可变量。我想通过使用物理斜率线和基于基线的两条直线之间的角度 x 来根据鼠标位置旋转它。我所说的基线可以在数学上表示为 x = orgin_x,其中orgin_x是旋转原点。另一条线是沿基线的一段,它将水平线端点垂直连接到orgin_x点。鼠标光标的角度是我想找到的旋转角色的角度。

请不要使用复杂的数学符号。我宁愿以 C 样式格式发布公式,并请解释数学背后的逻辑,以便我能够理解正在发生的事情并在需要时修复类似的未来问题。

一些基本的三角函数。您可以使用 atan2(delta_y, delta_x)。有了这个,您将在RAD中获得您的角度。要以度为单位获取角度,因为 RenderCopyEx 使用角度表示角度,因此您需要转换角度。你得到了360度和2 * PI Rad一个完整的圆圈。所以

angle_deg = (atan2(delta_y, delta_x)*180.0000)/3.1416

现在你有了做RenderCopyEx的角度

顺便说一下:

delta_y = origin_y - mouse_y

delta_x = origin_x - mouse_x