我正在寻找我的CCSprite的许多副本,或克隆,已经被子类化。这是我游戏中的一个敌方角色,我需要无数次地复制它。我该怎么做呢?
有人告诉我,我应该做一个EnemyFactory类,让敌人成组,并为游戏中的后续关卡存储它们。
如果有人能给我解释一下,我将不胜感激:)
发布于 2011-01-02 12:53:33
当然,听起来你想要一种机制来跟踪你正在创建的所有敌人,并监视/调整他们的位置?
我建议将新创建的敌人添加到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
发布于 2011-01-02 06:34:39
这是我用来创建敌人的一个例子。
当你想要创建敌人时,在你的图层中添加以下内容:
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;
@endEnemySpriteClass.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:敌人。
https://stackoverflow.com/questions/4543096
复制相似问题