我正在寻找已经被子类化的CCSprite的许多重复或克隆。它是我游戏中的敌人角色,我需要无数次复制它。我怎么能这样做?
我被告知我应该制作一个EnemyFactory类,让敌人成群结队,并将它们存储在游戏的后续级别。
如果有人可以请我解释一下,我将不胜感激:)
答案 0 :(得分:3)
当然,听起来你想要一种机制来跟踪你正在创造的所有敌人,并观察/调整他们的位置?
我建议将新创建的敌人添加到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/forum/topic/5971
答案 1 :(得分:0)
这是我用来创造敌人的一个例子。
在你的图层中,当你想要创建敌人时添加以下内容:
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];
}
然后根据CCSprite创建一个enemey类:
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:enemy]。