Используйте несколько листов спрайтов одновременно в Cocos2d-x - PullRequest
0 голосов
/ 03 апреля 2019

Я создаю платформерскую видеоигру в Cocos2d-x C ++.

То, что я хочу сделать, действительно легко, но все, что я нашел в Интернете, либо не работает, либо для другого языка программирования, такого как Objective-C.

У меня в основном несколько спрайтов, которые я хотел бы использовать в своей игре. Я не могу объединить их в 1 большую таблицу спрайтов, потому что они действительно большие.

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

Для использования 1 spritesheet я использую следующий код:

// load and cache the texture and sprite frames
auto cacher = SpriteFrameCache::getInstance();
cacher->addSpriteFramesWithFile("GJ_GameSheet02-hd.plist");

Я читал, что могу использовать SpriteBatch Node для этого, но я не нашел ничего связанного с тем, как использовать это на C ++.

Любая помощь будет оценена. Спасибо

1 Ответ

1 голос
/ 04 апреля 2019

Я использовал расширенную функцию Texture Packer: генерировал файлы .h и .cpp.Но все, что вам нужно, это:

cache->addSpriteFramesWithFile("Graphics-0.plist", "Graphics-0.png");

cache->addSpriteFramesWithFile("Graphics-1.plist", "Graphics-1.png");

Вам нужно всего лишь несколько раз вызывать addSpriteFramesWithFile со всеми вашими файлами .plist и .png

, если у вас много, вы можете создать цикл for:

void addSpriteFramesToCache(int i)
{
SpriteFrameCache *cache = SpriteFrameCache::getInstance();

    cache->addSpriteFramesWithFile("Graphics-" + std::to_string(i) + ".plist",
    "Graphics-" + std::to_string(i) + ".png");
}

for (int i = 0; i < numberOfFramesToLoad; i++) //
{
    addSpriteFramesToCache(i);
}
...