如何在Libgdx中调整精灵大小?

20

我对Libgdx中的sprite.setSize(float x, float y)方法存在问题。无论我传递什么参数,它都不会影响精灵的大小或尺寸。它们保持不变。

这是我的代码:

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

你能帮我找出我的错误吗?

1个回答

40

问题已得到解决。

我不得不使用sprite.draw(batch);而不是使用Batch.draw(Sprite sp, float x, float y);,因为Batch.draw(...)方法从传递的精灵中获取纹理并在绘制过程中使用固定宽度和高度的纹理。

另一种解决此问题的方法是在SpriteBatch类中使用batch.draw(Sprite, float x, float y, float width, float height);方法。


1
这个解决方案也是另一个问题的解决方案:减小Pixmap的大小。如果您使用Sprite.setScale()函数而不是setSize(),它会精确地缩放Pixmap(包装在Texture中)。这一直是一个问题:https://github.com/libgdx/libgdx/issues/2732#issuecomment-74154416 - jwehrle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接