2016-04-20 59 views
0

我試圖在LibGDX中翻轉一些動畫,但由於它們寬度不同,動畫會顯得很奇怪。這裏的問題:不同尺寸寬度平滑過渡的翻轉圖像

(紅點標記X/Y座標{0,0})

enter image description here

正如你可以看到,當,當你一拳播放動畫時, 「左」 時,腳開始落後於原來的位置,但是當你右擊時,動畫效果很好,因爲兩個動畫的起源都是左角,所以過渡很平滑。

我認爲實現我想要的只是看看正在播放什麼動畫並相應地調整座標。

這是代碼:

public static float draw(Batch batch, Animation animation, float animationState, 
     float delta, 
     int posX, int posY, boolean flip) { 
    animationState += delta; 
    TextureRegion r = animation.getKeyFrame(animationState, true); 
    float width = r.getRegionWidth() * SCALE; 
    float height = r.getRegionHeight() * SCALE; 

    if (flip) { 
     batch.draw(r, posX + width, posY, -width, height); 
    } else { 
     batch.draw(r, posX, posY, width, height); 
    } 

    return animationState; 
} 

任何建議是值得歡迎的,如何處理這個。

回答

1

使用其他一些batch.draw選項(以及其他參數)。您可以設置「原點」參數。它就像一個熱點......圖像的中心......所以,如果你旋轉,旋轉將圍繞該熱點進行。

https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/g2d/Batch.html

我沒有使用它的翻轉,但它應該工作方式相同。但是,如果它不是,那麼你必須自己調整座標,爲每一幀製作一些帶有X偏移量的列表,並將其添加爲翻轉圖像。

其他解決方案將是有更寬的幀圖像,並保持字符的中心始終匹配圖像的中心。這樣你的圖片就會變寬,然後他們必須 - 你會有一些空的空間,但是對於合理的幀數來說,這是可以接受的。

+0

謝謝。我嘗試設置originX,但我無法很好地工作。我有一些使用靜態寬度(字符空閒時的寬度)並試圖將其他中心精靈調整到中心的結果,但是一些動畫渲染OK和其他偏離中心。我會嘗試將所有精靈設置爲與您所說的相同的寬度,但總共有65個。 – Jh62

+0

你試過設置originX和originY,對吧?不確定它可以只設置一個值... – MilanG

+0

是的。正如你可以在這裏看到的[英文](http://i.imgur.com/dgowc3z.png)腳,這是什麼讓你在圖像之間過渡的感覺是總是偏離每幀幀中心,沒有辦法只以一個值爲中心。我嘗試了幾種不同的方法(甚至使所有幀的寬度/大小相同),並且當我修復一個動畫時,其他的會因此而中斷。我認爲更好的解決方案是用手來補償每一幀,這並不是我喜歡做的事情:( – Jh62