簡體   English   中英

Allegro 5,C ++和數學

[英]Allegro 5, C++, and Math

我正在寫游戲,所以我決定使用Allegro 5和C / C ++。 到目前為止,我已經解決了代碼中的大多數錯誤,但是我接觸了其中包含的圖形和數學計算,因此陷入了困境。

這是簡短的版本:

al_draw_rotated_bitmap(...)並沒有做什么。 有時圖像顯示在屏幕上,而其他時候則不在。 我已經驗證了所有內容都是通過使用al_draw_bitmap(...)進行繪制來加載的,而且一切都很好,此外,在繪制時也沒有段錯誤,因此其他所有功能都可以正常工作。

僅供參考,文檔針對al_draw_rotated_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度的旋轉。

我嘗試了很多事情,但都沒有取得理想的結果。 我試圖使c&d(x,y)相同,不同,將dx&dy設置為旋轉中心,將cx&cy設置為位圖中的各個點,后緩沖區,旋轉中心等,等等。真的,真的很愚蠢,在這里遺漏了一些東西,但我一直無法弄清楚。 如果有人知道此功能的工作原理,並願意幫助我使其工作,我將非常高興收到您的建議。 謝謝。

2014-04-08:有人要求我發布相關功能的代碼,如下所示:

實際圖紙:

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);
}

這個結構是Player的定義:

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;
};

好的,我不確定為什么以前不起作用...它的工作方式如下:

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)

對我來說很好! 仍然令我感到困惑的是,為什么一開始它不起作用...我懷疑這是我的代碼中的其他內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM