我试图根据鼠标旋转图像。这个想法是一个宇宙飞船游戏。宇宙飞船的尖端跟随鼠标光标,取决于光标位置,航天器旋转一个角度。
我使用的Allegro旋转功能:
al_draw_rotated_bitmap(OBJECT_TO_ROTATE,CENTER_X,CENTER_Y,X,Y,DEGREES_TO_ROTATE_IN_RADIANS);
这是宇宙飞船的x和y位置:
spaceship.x
spaceship.y
鼠标光标的x和y位置:
game_event.mouse.x
game_event.mouse.y
当识别出根据鼠标旋转的直角时,只需发送" DrawSpaceship"功能。此功能在主循环中绘制太空船。
Obs:我使用的是C和Allegro5
答案 0 :(得分:0)
atan ((spaceship.y - game_event.mouse.y) / (spaceship.x - game_event.mouse.x));
当然要考虑避免/ 0
你需要
#include <math.h>
答案 1 :(得分:0)
double mouseangle = direction(xscreen - 45, yscreen, xmouse, ymouse);
animpos = (mouseangle/180.0)*(nframes-1);
这是更“从头开始”的代码,具有更好的控制,当然也是更好的实践,可以独立于库。您可以随时调整文字。
nframes
是图片中的帧数direction
是一个以角度返回x1 x2 y1 y2之间的方向的函数animpos
是您要显示的动画帧xscreen
x图像位置,与屏幕相关(yscreen
类似)xmouse
鼠标的水平位置,与屏幕相关(xmouse
类似)