LibGDX Video Tutorial: Spritesheets and TextureAtlases


In this tutorial we look at the process of creating and using a Spritesheet in LibGDX.  This involves creating a series of sprites, putting them together with TexturePacker, then using a TextureAtlas and TextureRegion to display them with our Sprite.  We also quickly look at TexturePacker ( different product ) for those that prefer a UI.  Sample code and links to included assets below the video.


Once again, you can view the video in HD on YouTube by click here.



Example’s Source

package com.gamefromscratch;    import com.badlogic.gdx.ApplicationAdapter;  import com.badlogic.gdx.Gdx;  import com.badlogic.gdx.Input;  import com.badlogic.gdx.InputProcessor;  import;  import;  import;  import;  import;    public class SpritesheetDemo extends ApplicationAdapter implements InputProcessor {     SpriteBatch batch;     TextureAtlas textureAtlas;     Sprite sprite;     TextureRegion textureRegion;     int currentFrame = 1;     int MAX_FRAMES = 19;          @Override     public void create () {        batch = new SpriteBatch();        textureAtlas = new TextureAtlas(Gdx.files.internal("ss.txt"));        textureRegion = textureAtlas.findRegion("0001");        sprite = new Sprite(textureRegion);        sprite.setPosition( - sprite.getWidth()/2,     - sprite.getHeight()/2);          Gdx.input.setInputProcessor(this);     }       @Override     public void render () {, 0, 0, 1);;        batch.begin();        sprite.draw(batch);        batch.end();     }       @Override     public boolean keyDown(int keycode) {        if(keycode == Input.Keys.UP){           currentFrame++;           if(currentFrame > MAX_FRAMES)              currentFrame = 1;           sprite.setRegion(textureAtlas.findRegion(String.format("%04d",currentFrame)));        }        if(keycode == Input.Keys.DOWN){           currentFrame--;           if(currentFrame < 1)              currentFrame = MAX_FRAMES;             sprite.setRegion(textureAtlas.findRegion(String.format("%04d",currentFrame)));        }        return true;     }       @Override     public boolean keyUp(int keycode) {        return false;     }       @Override     public boolean keyTyped(char character) {        return false;     }       @Override     public boolean touchDown(int screenX, int screenY, int pointer, int button) {        return false;     }       @Override     public boolean touchUp(int screenX, int screenY, int pointer, int button) {        return false;     }       @Override     public boolean touchDragged(int screenX, int screenY, int pointer) {        return false;     }       @Override     public boolean mouseMoved(int screenX, int screenY) {        return false;     }       @Override     public boolean scrolled(int amount) {        return false;     }  }


The sprite art used for this example was rendered using this Blender file.

The texture packing application (near the end) was CodeAndWeb’s TexturePacker.

Programming Video

Scroll to Top