2014-04-08 39 views
1

我在寫遊戲,並決定使用Allegro 5和C/C++。到目前爲止,我已經編寫了代碼中的大部分錯誤,但是我已經涉及到圖形和包含的數學計算,並且我被卡住了。Allegro 5,C++和Math

這裏的短版本:

al_draw_rotated_bitmap(...)沒有做太多。有時圖像在屏幕上,有些時候則不是。我已驗證所有內容都是通過al_draw_bitmap(...)進行繪製加載的,並且一切都很好,另外,在繪圖上沒有段錯誤,所以其他所有工作都是如此。

僅供參考,該文件說,這是對的al_draw_rotated_bitmap(...)參數:

al_draw_rotated_bitmap(ALLEGRO_BITMAP *bitmap, float cx, float cy, float dx, float dy, float angle, int flags)

哪裏cx是X-中心,cy是Y中心,dx是X-目的地,dy是Y目標,angle是以弧度旋轉的角度,flags是告訴Allegro是否應該在位圖上執行+/- 90度旋轉的事情的組合。

我試過很多東西,沒有一個能產生想要的結果。我已經嘗試使d(x,y)相同,不同,將dy設置爲旋轉中心,將cx & cy設置爲位圖中的各個點,後緩衝器,旋轉中心等等。我可能只是在這裏真的很愚蠢,錯過了一些東西,但我一直沒有弄明白。如果有人知道這個功能如何工作,並願意幫助我完成工作,我會很樂意聽取您的建議。謝謝。

2014年4月8日:我被要求張貼代碼相關的功能,這裏有雲:

實際繪圖:

void renderPlayer(Player player)  { 
cout << player.x << " " << player.y << endl; 
float angle = 0; 
al_draw_rotated_bitmap(player.tex, 200, 200, 0, 0, angle, NULL); 
} 

這個結構是一個球員的定義是:

struct Player { 
float x; 
float y; 
float r; 
float t; 
int radius; 
int sizex; 
int sizey; 
int health; 
int speed; 
ALLEGRO_BITMAP *tex; 
Weapon weapon; 
}; 
+0

你能告訴我們你的實際代碼嗎? – Tommy

+0

完成。它在原始文章中。 – PyroAVR

回答

2

好吧,我不知道爲什麼之前沒有工作... 它應該工作的方式如下:

al_draw_rotated_bitmap(ALLEGRO_BITMAP *yourbmp, int bitmap_coord_x, int bitmap_coord_y, int screen_coord_x, int screen_coord_y, float angle_in_radians, int flags)

對我來說工作正常!它仍然令我困惑,爲什麼這一開始不起作用......我懷疑這是我的代碼中的其他內容。