web-dev-qa-db-fra.com

Comment redimensionner un Sprite dans Libgdx?

J'ai un problème avec la méthode Sprite.setSize(float x, float y) dans Libgdx. Cela n'affecte pas la taille ou les dimensions du Sprite. Ils restent fixes quoi que je passe à la méthode setSize ().

voici mon code:

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
    }
}

pourriez-vous s'il vous plaît trouver mon erreur?

19
Wazani

Le problème a été résolu.

J'ai dû utiliser Sprite.draw(batch); au lieu d'utiliser Batch.draw(Sprite sp, float x, float y); puisque la méthode Batch.draw(...) prend la texture du Sprite passé et utilise la texture dans le processus de dessin qui a un fixe largeur et une hauteur fixe.

Une autre façon de résoudre ce problème consiste à utiliser la méthode batch.draw(Sprite, float x, float y, float width, float height); dans la classe SpriteBatch.

39
Wazani