web-dev-qa-db-ja.com

Libgdxでスプライトのサイズを変更する方法は?

LibgdxのメソッドSprite.setSize(float x, float y)に問題があります。スプライトのサイズや寸法には影響しません。 setSize()メソッドに渡したものはすべて修正されたままです。

これが私のコードです

public class GameScreen implements Screen {

    OrthographicCamera camera;

    SpriteBatch batch;
    Texture carTexture;
    Sprite carSprite;

    public GameScreen()
    {
    }

    @Override
    public void render(float delta) {
        // TODO Auto-generated method stub
        Gdx.gl.glClearColor(0,0,0,0);
        Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
        batch.begin();
            carSprite.setSize(16, 32);
            batch.draw(carSprite, 0 , 0);
        batch.end();
        camera.update();    
}

    @Override
    public void resize(int width, int height) {
        // TODO Auto-generated method stub
        camera.viewportWidth=width;
        camera.viewportHeight=height;
        camera.update();
    }

    @Override
    public void show() {
        // TODO Auto-generated method stub
        camera = new OrthographicCamera();
        batch = new SpriteBatch();

        carTexture = new Texture(Gdx.files.internal("NetRace.png"));
        carTexture.setFilter(TextureFilter.Linear, TextureFilter.Linear);

        carSprite = new Sprite(carTexture);
    }

    @Override
    public void hide() {
        // TODO Auto-generated method stub
    }

    @Override
    public void pause() {
        // TODO Auto-generated method stub
    }

    @Override
    public void resume() {
        // TODO Auto-generated method stub
    }

    @Override
    public void dispose() {
        // TODO Auto-generated method stub
    }
}

私の間違いを見つけて頂けますか?

19
Wazani

問題は解決しました。

Sprite.draw(batch);メソッドは渡されたSpriteからテクスチャを受け取り、修正された描画プロセスでテクスチャを使用するため、Batch.draw(Sprite sp, float x, float y);を使用する代わりにBatch.draw(...)を使用する必要がありました。幅と固定高さ。

この問題を解決する別の方法は、SpriteBatchクラスのbatch.draw(Sprite, float x, float y, float width, float height);メソッドを使用することです。

39
Wazani