首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复制CCSprite

复制CCSprite
EN

Stack Overflow用户
提问于 2010-12-28 09:32:12
回答 2查看 3.8K关注 0票数 0

我正在寻找我的CCSprite的许多副本,或克隆,已经被子类化。这是我游戏中的一个敌方角色,我需要无数次地复制它。我该怎么做呢?

有人告诉我,我应该做一个EnemyFactory类,让敌人成组,并为游戏中的后续关卡存储它们。

如果有人能给我解释一下,我将不胜感激:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-02 12:53:33

当然,听起来你想要一种机制来跟踪你正在创建的所有敌人,并监视/调整他们的位置?

我建议将新创建的敌人添加到NSMutableArray中,如下所示:

代码语言:javascript
复制
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];
}

然后,当你想要查看/调整敌人的精灵位置时,比如在主游戏循环中,当他们攻击你的英雄时,使用以下命令:

代码语言:javascript
复制
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

票数 3
EN

Stack Overflow用户

发布于 2011-01-02 06:34:39

这是我用来创建敌人的一个例子。

当你想要创建敌人时,在你的图层中添加以下内容:

Gamelayer.m

代码语言:javascript
复制
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

代码语言:javascript
复制
#import "cocos2d.h"

@interface EnemySpriteClass: CCSprite
{
}

-(id) init;

@end

EnemySpriteClass.m

代码语言:javascript
复制
#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:敌人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4543096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档