簡體   English   中英

如何從具有不同精靈大小的精靈表中獲取subImage?

[英]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.

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