所以我正在做一個遊戲,在線教程。目前,我有一些FPS內置到系統中,和一個簡單的動畫,它使用像這樣的精靈件:C++/SDL動畫速度
if(frameCount > 12)
frameCount = 0;
//hero frames
SDL_Rect clip[ 13 ];
clip[ 0 ].x = 0;
clip[ 0 ].y = 0;
clip[ 0 ].w = 44;
clip[ 0 ].h = 39;
clip[ 1 ].x = 51;
clip[ 1 ].y = 0;
clip[ 1 ].w = 44;
clip[ 1 ].h = 39;
clip[ 2 ].x = 102;
clip[ 2 ].y = 0;
clip[ 2 ].w = 44;
clip[ 2 ].h = 39;
...
...
SDL_BlitSurface(hero, &clip[ frameCount ], destination, &offset);
frameCount++;
現在,這工作得很好,和while循環的每次迭代將導致它玩了下動畫中的框架(此動畫順便說一句,是角色類的一部分)。
我面臨的問題是動畫的速度。它發生在當前60的遊戲FPS上,我希望能夠單獨控制玩家動畫的速度,這樣我就可以把它放慢到合理的速度。
有沒有人有任何建議,我該怎麼做呢?
注:共有13幀。
我同意,這個解決方案也可以,但是如果你的顯示速度低於動畫速率,它會使用更多的CPU,因爲你仍然會全速更新你的動畫狀態。 – Miguel
我同意你的方法更快。然而這種方法更通用一些。例如,如果您想要在一段時間內跳過精靈更改或執行其他操作,則公式會變得複雜。 – Shahbaz
我在解決方案中處理精靈更改的方式是讓每個角色跟蹤其狀態。遊戲邏輯觸發狀態改變,狀態改變意味着動畫可以停止,或改變爲一組不同的幀,等等。每個精靈都知道它的可能狀態是什麼。實際上,這很容易。 – Miguel