[英]How to get subImages from a sprite sheet with different sprite sizes?
我正在用Java進行格斗游戲,並且在動畫方面遇到了一些麻煩。
問題是當玩家閑置或行走時,我沒問題,因為每個子畫面都有固定的寬度(50像素),但是當玩家攻擊時,只要拳頭越遠,子畫面就會越寬。 在游戲中,子畫面無法正確繪制。
PS:我將每個幀/子畫面保存在arraylist中,然后根據子畫面數手動更改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加載?
正如MadProgrammer的建議那樣,您可以手動設置圖紙中每個精靈的大小。 由於高度總是相同的,因此您可以簡單地在紙上放置一個具有精靈數量的數組,並僅將精靈寬度放入其中。
為了幫助您,您可以在手動設置以下值之前先做一個循環:
float cellWidths[MAX_FRAMES/CELLNUMBER];
for(int i=0; i<MAX_FRAMES/CELLNUMBER;i++){
cellWidths[i] = CELLWIDTH;
}
//set non default values manually.
然后您只需要像這樣更改您:
for(int i = 1; i < MAXFRAMES; i++) {
subtmp = tmp.getSubimage((cellWidths[i-1] * i) + k - cellWidths[i-1], 1, cellWidths[i-1], CELLHEIGHT);
this.animation_idle_right.add(subtmp);
k++;
}
但是我可能會誤解MAX_FRAMES的含義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.