根据鼠标旋转图像

时间:2015-05-27 04:49:52

标签: c allegro allegro5

我试图根据鼠标旋转图像。这个想法是一个宇宙飞船游戏。宇宙飞船的尖端跟随鼠标光标,取决于光标位置,航天器旋转一个角度。

我使用的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

2 个答案:

答案 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类似)