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 com.badlogic.gdx.graphics.GL20;  import com.badlogic.gdx.graphics.g2d.Sprite;  import com.badlogic.gdx.graphics.g2d.SpriteBatch;  import com.badlogic.gdx.graphics.g2d.TextureAtlas;  import com.badlogic.gdx.graphics.g2d.TextureRegion;    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(Gdx.graphics.getWidth()/2 - sprite.getWidth()/2,              Gdx.graphics.getHeight()/2 - sprite.getHeight()/2);          Gdx.input.setInputProcessor(this);     }       @Override     public void render () {        Gdx.gl.glClearColor(0, 0, 0, 1);        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);        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