2016-06-05 2 views
0

Когда я рисую спрайт в (0,0) с исходным размером текстуры (256,256), он отлично работает, но когда я изменяю положение или размер, спрайт перепутался. Вот код:LibGdx Cutting Texture Вместо масштабирования

private SpriteBatch batch; 
private Sprite sprite; 
private OrthographicCamera camera; 

@Override 
public void create() { 
    camera=new OrthographicCamera(600,600); 
    camera.position.set(0,0,0); 
    camera.update(); 
    batch=new SpriteBatch(); 
    sprite=new Sprite(new Texture("TestBlock_01.png"),0,0,256,256); 
} 

@Override 
public void render() { 
    Gdx.gl.glClearColor(1, 0, 0, 1); 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 
    batch.begin(); 
    batch.setProjectionMatrix(camera.combined); 
    batch.draw(sprite,sprite.getX(),sprite.getY(),sprite.getWidth(),sprite.getHeight()); 
    batch.end(); 
} 

resault: enter image description here

Но теперь, когда я изменить положение и размер до (-100, -100,100,100): enter image description here

Как я могу исправить Это?

+0

Используйте 'sprite.draw (партия)', 'не batch.draw (спрайт, ...);'. Вы можете назвать это основной проблемой дизайна libgdx, чтобы Sprite расширил TextureRegion и, надеюсь, он будет исправлен в следующей крупной версии. – Xoppa

ответ

0

Ответ заменить

sprite=new Sprite(Texture,x,y,width,height); 

с

sprite=new Sprite(Texture); 
sprite.setPosition(x,y); 
sprite.setSize(width height); 
+0

Разделение конструктора не оказывает никакого эффекта –

+0

Конструктор изменяет переменные srcX, srcY, srcWidth и srcHeight. это разные переменные от обычных x, y, width, height. –

0

Я думаю, что вы должны установить спрайт происхождение отлично работать вместе с масштабными и положения changing.As описано here

void setOrigin(float originX, float originY) 
Sets the origin in relation to the sprite's position for scaling and rotation. 

А также вызывать метод draw в render с параметром origi nX, OriginY, если вам нужно отлично вращаться. Как описано here

void draw(TextureRegion region, float x, float y, float originX, float originY, float width, float height, float scaleX, float scaleY, float rotation) 

Draws a rectangle with the bottom left corner at x,y and stretching the region to cover the given width and height.