0
我正在做一個Java遊戲,我在動畫方面遇到了一些麻煩。當玩家閒置或行走時,我沒有問題,因爲每個精靈都有一個固定的寬度(50px),但是當玩家攻擊精靈時,只要打得更遠,精靈就會變得更寬。在遊戲中,精靈不能正確繪製。 PS:我將每幀/精靈保存在一個數組列表中,並根據精靈的數量手動更改MAXFRAMES。 SS
是spritesheet。如何從不同精靈尺寸的精靈圖表中獲取子圖像?
我正在使用getSubImage方法如下。
public void setAnimacionIdleRight(BufferedImage ss) {
this.animation_idle_right = new ArrayList<BufferedImage>();
BufferedImage tmp = ss.getSubimage(0, 0, 350, 100);
BufferedImage subtmp = null;
int k = 1;
for(int i = 1; i < MAXFRAMES; i++) {
subtmp = tmp.getSubimage((CELLWIDTH * i) + k - CELLWIDTH, 1, CELLWIDTH, CELLHEIGHT);
this.animation_idle_right.add(subtmp);
k++;
}
}
SpriteSheet例如:
什麼想法?或者是解決方案蠻力img加載?
兩件事情:1-使每個精靈始終大小完全相同或2-創建某種查詢表,它可以告訴你在給定位置的精靈大小 – MadProgrammer
@MadProgrammer是絕對正確的。沒有別的辦法。我認爲第二個建議是最好的,因爲您可以節省空間,但創建LUT需要很多開銷。如果您使用第一種方法,開發速度會更快。 –
或者3-使用某種類型的圖像分析庫來分離出子圖像矩形,那些保存連續圖像的矩形......最多隻有一點棘手。 –