Создание дубликата CCSprite - PullRequest
0 голосов
/ 28 декабря 2010

Я хочу сделать много дубликатов или клонов моего CCSprite, которые были разделены на подклассы.Это вражеский персонаж в моей игре, и мне нужно будет дублировать его бесчисленное количество раз.Как я могу это сделать?

Мне сказали, что я должен создать класс EnemyFactory, который объединяет врагов в группы и хранит их для последующих уровней в игре.

Если кто-то может пожелатьобъясните мне это, я был бы очень признателен:)

Ответы [ 2 ]

3 голосов
/ 02 января 2011

Конечно, звучит так, будто вы хотите, чтобы механизм отслеживал всех созданных вами врагов и наблюдал / корректировал их локации?

Я предлагаю добавить вновь созданных врагов в NSMutableArray следующим образом:

static NSMutableArray *allMyEnemies = [[NSMutableArray alloc] init];

int numberOfEnemies = 3;

for (int i = 0; i < numberOfEnemies; i++){
    EnemySpriteClass *enemy = [[EnemySpriteClass alloc] init];
    [allMyEnemies addObject:enemy];
    [self addChild:enemy];
}

Затем, когда вы хотите посмотреть / откорректировать позиции вражеских спрайтов, скажем, в основном игровом цикле, когда они атакуют вашего героя, используйте следующее:

for (int i = 0; i < [allMyEnemies count]; i++) {
    EnemySpriteClass * obj = (EnemySpriteClass *)[allMyEnemies objectAtIndex:i];
    NSLog("Enemy sprite is at this position: x:%f y:%f", 
           obj.position.x, obj.position.y);
    //Then add logic to adjust that position if needed
    obj.position.x -= 50;       
}

Посетите официальные форумы cocos2d, чтобы найти хорошие методы для такого управления спрайтами: http://www.cocos2d -iphone.org / форум / тема / 5971

0 голосов
/ 02 января 2011

Вот пример того, что я использую для создания врагов.

В вашем слое добавьте следующее, когда вы хотите создать врагов:

Gamelayer.m

int numberOfEnemies = 3;

for (int i = 0; i < numberOfEnemies; i++){
    EnemySpriteClass *enemy = [[EnemySpriteClass alloc] init];
    enemy.position = ccp(50 + 50*i, 50);
    [self addChild:enemy];
}

А затем создайте класс enemey на основе CCSprite:

EnemySpriteClass.h

#import "cocos2d.h"

@interface EnemySpriteClass: CCSprite
{
}

-(id) init;

@end

EnemySpriteClass.m

#import "EnemySpriteClass.h"

@implementation EnemySpriteClass

-(id) init
{
    if( (self=[super init] )) {
        self = [CCSprite spriteWithFile:@"squid.png"];
        //Add AI, life other properties.
    }
    return self;
}

Если у вас возникли проблемы с производительностью, создавая ихна лету вы всегда можете создать их в пакетном режиме и затем вызвать [self addchild: врага], когда захотите, чтобы они появились на экране.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...