Используя LibGDX, как у вас получается анимация с использованием отдельных изображений?

1

Я изучаю, как делать игры с помощью LibGDX, и я пытаюсь сделать небольшую платформу (используя Eclipse). Я сделал 4 изображения на главном персонаже, чтобы сделать анимацию, когда он двигается. Тем не менее, я не могу найти ничего онлайн, чтобы показать мне, как сделать анимацию, не используя SpriteSheet. Как сделать анимацию с использованием 4 разных изображений?

Теги:
libgdx
animation

2 ответа

5
Лучший ответ

Прежде всего: вы не должны использовать разные изображения. Возможно, для вашего игрока это не имеет большого значения (потому что есть только один), но в целом вы всегда должны использовать спрайт-листы, a.k.a. TextureAtlas.

Однако это возможно без него, используя разные текстуры.

TextureRegion tex1 = new TextureRegion(new Texture("play_anim_1"));
TextureRegion tex2 = new TextureRegion(new Texture("play_anim_2"));
TextureRegion tex3 = new TextureRegion(new Texture("play_anim_3"));
TextureRegion tex4 = new TextureRegion(new Texture("play_anim_4"));

Animation playerAnimation = new Animation(0.1f, tex1, tex2, tex3, tex4);
1

Вы должны использовать TexturePacker с TextureAtlas. Добавление каждой текстуры вручную не является правильным способом.

Пакер текстур упаковывает ваши несколько изображений в одно изображение. Используйте имена, подобные этому: img_01.png, img_02.png и т.д., И вы извлекаете их все в одной строке кода в массиве.

Я отправлю примеры кода через несколько часов, когда вернусь домой.

У меня на самом деле был отдельный класс для работы с загрузкой активов:

public abstract class Assets {
private static AssetManager asm = new AssetManager();
private static String assetsPackPath = "assets.pack";
public static TextureAtlas atlas;

public static void load(){
    asm.load(assetsPackPath, TextureAtlas.class);
    asm.finishLoading();

    atlas = asm.get(assetsPackPath);
}

public static void dispose(){
    asm.dispose();
}
}

И код, который загружает анимацию:

playerRun = new Animation(1/10f, Assets.atlas.findRegions("run"));
playerRun.setPlayMode(Animation.PlayMode.LOOP);

Мои исходные анимационные образы были запущены__001.png, run_002.png,...

Поскольку ваши имена файлов имеют формат name_0001.png, пакет текстур кладет анимационные ключевые кадры в один файл, и все они имеют одно имя "имя" и дополнительный параметр "индекс", который является номером в имени вашего файла, например 001, 002, 003 и т.д.

И Assets.atlas.findRegions("run") возвращает массив с ключевыми кадрами.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню