如何在Libgdx中调整sprite的大小?

我在sprite.setSize(float x, float y)的方法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 } } 

你能找到我的错误吗?

问题解决了。

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

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