Объединение двух текстур в одну - PullRequest
1 голос
/ 22 ноября 2010

Я разрабатываю игру для iOS. Я использую cocos2d libs. Я хочу иметь объект, у которого есть 3 части - начало, конец и середина. У меня есть изображение с этими компонентами. И объект может быть растянут при создании. Но только средняя часть должна быть растянута, начало и конец не должны иметь масштабирования. Поскольку эта операция выполняется только после того, как я решил, что будет хорошей идеей создать новый CCSprite для этого объекта, а не оставлять три (для повышения производительности).

Я использую CCSPriteBatchNode для рендеринга, и я не знаю, действительно ли мне нужно объединить части объекта (возможно, рендеринг 3-х частей с использованием пакета будет таким же быстрым, как рендеринг одного предварительно объединенного объекта).

Итак, есть два вопроса:

  1. Нужно ли объединять детали в один объект?

  2. Если да - как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 23 января 2011

Посмотрите демонстрацию RenderTexture.

Вместо кисти вы можете положить на нее 3 части, используя эти изображения вместо кисти.

1 голос
/ 24 ноября 2010

Вместо объединения текстур вы можете создать узел и добавить к нему три спрайта в качестве дочерних. Затем вы можете работать с родительским узлом как с единым целым.

Что-то вроде:

CCNode *sprites = [CCNode node];

CCSprite *spriteA = [CCSprite spriteWithSpriteFrameName:@"spriteA.png"];
spriteA.position = ccp(-10, 0);
[sprites addChild:spriteA];

CCSprite *spriteB = [CCSprite spriteWithSpriteFrameName:@"spriteB.png"];
spriteB.position = ccp(0, 0);
[sprites addChild:spriteB];

CCSprite *spriteC = [CCSprite spriteWithSpriteFrameName:@"spriteC.png"];
spriteC.position = ccp(10, 0);
[sprites addChild:spriteC];

Вы можете масштабировать и позиционировать каждый отдельный спрайт в зависимости от ваших параметров, а затем работать с объектом sprites для позиционирования / масштабирования их в целом.

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

...