2015-05-27 69 views
0

我想根據鼠標旋轉圖像。這個想法是一個太空飛船遊戲。飛船的尖端跟隨着鼠標光標,這取決於航天器旋轉角度的光標位置。根據鼠標旋轉圖像

我使用的快板旋轉功能:

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 

當確定根據鼠標旋轉的直角時,只需發送角度爲th e「DrawSpaceship」功能。該功能在主循環中繪製太空船。

觀測值:我使用C和Allegro5

回答

0
atan ((spaceship.y - game_event.mouse.y)/(spaceship.x - game_event.mouse.x)); 

當然了測試,以避免/ 0

您需要

#include <math.h> 
+0

'ATAN2(DY,DX)'會照顧的被零除,並且還根據dx'的'符號放置角度在正確象限和'dy'。 (然後你可能不得不交換減法的參數,所以角度爲0意味着太空船以(1,0)方向朝向。) –

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 mous E公司的水平位置時,屏幕相關(xmouse類似於)
+0

也許你可以顯示方向功能的實現你的解決方案 – rlam12