Я изучаю, как делать игры с помощью LibGDX, и я пытаюсь сделать небольшую платформу (используя Eclipse). Я сделал 4 изображения на главном персонаже, чтобы сделать анимацию, когда он двигается. Тем не менее, я не могу найти ничего онлайн, чтобы показать мне, как сделать анимацию, не используя SpriteSheet. Как сделать анимацию с использованием 4 разных изображений?
Прежде всего: вы не должны использовать разные изображения. Возможно, для вашего игрока это не имеет большого значения (потому что есть только один), но в целом вы всегда должны использовать спрайт-листы, 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);
Вы должны использовать 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")
возвращает массив с ключевыми кадрами.