2014-12-07 31 views
1

我對這個框架非常陌生,我遇到了一些讓Sprite旋轉的麻煩。我認爲我做對了,但不知何故,它不工作。創建時旋轉Sprite。

這就是我所擁有的:我使用的是scene2d,我有一個叫做Cube的Actor。在這個立方體的構造我產生了這是一個立方體執行以下操作的精靈質地:

public Cube(){ 
    sizeOfCube = 40; 

    Pixmap pixmap = new Pixmap(sizeOfCube,sizeOfCube, Pixmap.Format.RGBA8888); 
    pixmap.setColor(Color.BLUE); 
    pixmap.fill(); 
    pixmap.drawRectangle(0,0,sizeOfCube,sizeOfCube); 

    Texture rectangleTexture = new Texture(pixmap); 
    pixmap.dispose(); 

    rectangleSprite = new Sprite(rectangleTexture,0,0,sizeOfCube,sizeOfCube); 
    rectangleSprite.setPosition(Gdx.graphics.getWidth()/2 - rectangleSprite.getWidth()/2, 
      Gdx.graphics.getHeight()/2); 

    rectangleSprite.setOrigin(rectangleSprite.getWidth()/2, rectangleSprite.getHeight()/2); 
    rectangleSprite.rotate(45f); 
} 

在演員的畫法,我有:

@Override 
public void draw(Batch batch, float alpha){ 
    batch.draw(rectangleSprite, rectangleSprite.getX(), rectangleSprite.getY()); 
} 

精靈是正確呈現在屏幕上,但根本沒有旋轉!這讓我瘋狂,我已經閱讀了多個地方,我的代碼似乎很好,但我無法使它工作,所以必須有一些我錯過的東西,因爲我對這個世界完全陌生。

非常感謝!

回答

1

提請你立方時,你應該向有關旋轉批:

@Override 
public void draw(Batch batch, float alpha){ 
    batch.draw(rectangleSprite, 
       rectangleSprite.getX(), 
       rectangleSprite.getY(), 
       rectangleSprite.getOriginX(), 
       rectangleSprite.getOriginY(), 
       rectangleSprite.getWidth(), 
       rectangleSprite.getHeight(), 
       rectangleSprite.getScaleX(), 
       rectangleSprite.getScaleY(), 
       rectangleSprite.getRotation()); 
} 

通過,你可以把它縮短的方式。不要創建新的雪碧。只需調用Cube方法(它是您所說的演員):setPosition(),setOrigin(),rotate()。然後,在渲染的方法,你可以使用立方方法是這樣的:

batch.draw(rectangleSprite, getX(), getY(), getOriginX(), getOriginY(), getWidth(), getHeight(), getScaleX(), getScaleY(), getRotation()); 
+0

謝謝!它非常完美!我討厭在新的東西,很難讓你開始! – Andres 2014-12-07 15:13:13

1

如果你打電話sprite.draw(Batch batch)sprite.draw(Batch batch, float alphaModulation),libGDX將在所有爲你的精靈屬性的因素,而不是你不必自己做他們與你自己的平局。