Android Studio и LibGDX: Создаем простую 2D игру (Часть 3: Анимация актера)

Давайте добавим анимацию к одному из Актёров (анимируем актёра).

Скачать исходники для статьи можно ниже

Вторую часть создания 2D игры читайте здесь — Android Studio и LibGDX: Создаем простую 2D игру (Часть 2)

Давайте анимируем Актёра — Jugador.

Теперь он станет кошкой и будет моргать глазками и махать ушками:

animactor2

Для этого нам понадобится исправить код в 2-х файлах: ActorJugador и MainGameScreen.

Код MainGameScreen:

package com.mygdx.game;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.mygdx.game.actors.ActorJugador;
import com.mygdx.game.actors.ActorPinchos;



public class MainGameScreen extends BaseScreen {
    public MainGameScreen (MainGame game) {
        super(game);

        texturePinchos=new Texture("pinchos.png");
        regionPinchos=new TextureRegion(texturePinchos, 0, 64, 128, 64);



    }

    private Stage stage;
    private ActorJugador jugador;
    private ActorPinchos pinchos;

    private Texture texturePinchos;
    private TextureRegion regionPinchos;

    private TextureAtlas textureAtlas;



    @Override
    public void show() {

        stage = new Stage();
        jugador = new ActorJugador(textureAtlas);
        pinchos=new ActorPinchos(regionPinchos);

        stage.addActor(jugador);
        stage.addActor(pinchos);


        jugador.setPosition(20,100);
        pinchos.setPosition(500,100);
    }

    @Override
    public void hide() {
        stage.dispose();

    }

    @Override
    public void render(float delta) {
        Gdx.gl.glClearColor(0.4f, 0.5f, 0.8f, 1f);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        stage.act();
        comprobarColisiones();
        stage.draw();
    }

    private void comprobarColisiones(){
        if (jugador.isAlive()&&jugador.getX()+jugador.getWidth()>pinchos.getX()){
            //System.out.println("Colision");
            jugador.setAlive(false);
            game.setScreen(game.gameOverScreen);
        }
    }

    @Override
    public void dispose() {

        texturePinchos.dispose();
        textureAtlas.dispose();
    }
}

В нём убрал текстуры для Актёра Jugador, а также создал TextureAtlas.

Код файла ActorJugador:

package com.mygdx.game.actors;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.g2d.Animation;
import com.badlogic.gdx.graphics.g2d.Batch;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.scenes.scene2d.Actor;


public class ActorJugador extends Actor {

   private TextureAtlas textureAtlas;
   private Animation animation;
    private float stateTime;


    private boolean alive;

    public boolean isAlive() {
        return alive;
    }

    public void setAlive(boolean alive) {
        this.alive = alive;
    }

    public ActorJugador(TextureAtlas jugator){

        this.alive=true;
        setSize(279,225 );

        textureAtlas=new TextureAtlas(Gdx.files.internal("catatlas.atlas"));
        animation=new Animation(1/7f,textureAtlas.getRegions());

    }

    public void act (float delta){
        super.act(delta);
    }

    public void draw (Batch batch, float parentAlpha){
        super.draw(batch, parentAlpha);
        stateTime += Gdx.graphics.getDeltaTime();
        batch.draw((TextureRegion) animation.getKeyFrame(stateTime, true), 10, 10);

    }
}

Для анимации я использовал 2 файла (catatlas.atlas и catatlas.png), которые поместил в папку assets:

animactor

Скачать данные файлы можно по следующей ссылке — скачать catatlas.atlas и catatlas.png.

Как создать Атлас Текстуры (catatlas.atlas и catatlas.png) из набора картинок или gif анимации читайте тут — Создаём атлас текстур с помощью LibGDX.

Введите свой email адрес для того, чтобы подписаться на мой блог:


knopkisoc

Добавить комментарий