Cocos2d CCSpriteBatchNode со слоями и дочерними элементами

Как я могу создавать CCSprites, состоящие из нескольких подспрайтов, используя таблицы спрайтов?

Например, в моей игре есть мастер с несколькими фреймами. Его тянет к CCSpriteBatchNode, содержащему все его кадры. Я хочу добавить в мастер предметы, такие как посох и т. д. Посохи находятся на другом листе спрайтов.

Обычно я думаю о добавлении спрайта посоха к родительскому спрайту волшебника и размещении посоха относительно волшебника. Но очевидно, что это вызывает ошибку, потому что посох должен быть нарисован на пакетном узле, содержащем посох, верно?

Как вы управляете многоуровневыми/композитными спрайтами с помощью CCSpriteBatchNode?


person Sean Clark Hess    schedule 14.08.2013    source источник
comment
Я не использую пакетные узлы для анимации: если подумать, у вас есть только один кадр за раз, поэтому вы не получаете особой выгоды от столь насмехающегося «улучшения производительности». Поэтому я делаю эти анимации с обычными анимациями спрайтов и могу свободно добавлять все, что захочу, в качестве дочерних элементов к анимации солдата (панель здоровья, спрайты урона и т. д.), не мучая себя ограничениями пакетных узлов.   -  person YvesLeBorg    schedule 14.08.2013
comment
@YvesLeBorg В этом есть смысл. Я перепутал использование CCSpriteBatchNodes с решением поместить все свои материалы в таблицы спрайтов. Это отдельные решения. Спасибо!   -  person Sean Clark Hess    schedule 14.08.2013


Ответы (2)


Конечно, вы должны использовать CCSpriteBatchNode из-за производительности. Невозможно использовать текстуру размером до 2048x2048 для вашего пакетного узла. вы должны создать два CCSpriteBatchNode. Один для вашего волшебника, а другой для ваших предметов и расположите их относительно вашего волшебника.

person K1laba    schedule 15.08.2013
comment
Правда ли, что я не смогу использовать относительное позиционирование? Мне нужно было бы расположить элемент абсолютно относительно мастера, верно? - person Sean Clark Hess; 16.08.2013
comment
Да, вы должны позиционировать элемент абсолютно относительно мастера - person K1laba; 16.08.2013

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

Простой переход на таблицы спрайтов позволил моему приложению быстро загружаться с меньшим объемом памяти, и оно работает нормально. Поскольку вы должны отказаться от возможности позиционировать вещи относительно с помощью CCSpriteBatchNodes, это не стоит того, если только производительность уже не плохая.

person Sean Clark Hess    schedule 24.08.2013