2014-03-28 70 views
0

我有4个精灵,每次游戏开始时它都会随机从4个精灵中选择1个作为主精灵。选择随机精灵Cocos2d 3.0

我该怎么做?

我知道我需要使用arc4random

+0

这个问题不符合该平台的标准。请先尝试自行找到解决方案。如果您对帖子的详细信息停留在迄今为止已尝试的内容中, –

+0

如果以下任何答案适用于您,请您接受相同的答案。 – SaffronState

回答

0

首先,你是在NSMutableArray添加所有精灵如下面的代码。

分配阵列

NSMutableArray *AryT = [[NSMutableArray alloc]init]; 

不同的充精灵

CCSprite *torpedoOne1 = [CCSprite spriteWithFile:@"[email protected]"]; 

CCSprite *torpedoOne2 = [CCSprite spriteWithFile:@"[email protected]"]; 

CCSprite *torpedoOne3 = [CCSprite spriteWithFile:@"[email protected]"]; 

全部添加这精灵在定义数组

[AryT addObject:torpedoOne1]; 

[AryT addObject:torpedoOne2]; 

[AryT addObject:torpedoOne3]; 

采取随机数从数组

int RandomIndex = arc4random_uniform(AryT.count); 

Randomaly精灵

[self addchild:[AryT objectAtIndesx:RandomIndex]]; 
+0

请注意,在此实现中,您正在加载所有精灵的纹理数据。如果OP只想使用一个进行长时间会话,则会导致内存浪费。我建议只在数组中存储文件**名称**,当你选择一个时,你加载相应的精灵。 – Voldemort

1

最简单的方法是 - 名你图片(.png)文件的一些号码,例如sprite1.png,sprite2.png ....

int rndSprtNum = (arc4random() % 4) + 1;   
    CCSPrite *mainSprite = [CCSprite spriteWithFile:[NSString StringWithFormat:@"sprite%d.png",rndSprtNum]]; 
    mainSprite.position = ccp(x,y); 
    [self addChild:mainSprite]; 

这样,你不需要采取一个可变数组等。希望这会有所帮助。

0

这里的另一种方法,如果你不想重命名文件,你可以简单地把自己的名字的数组:

NSString *names[4] = {@"RedSprite.png", @"GreenSprite.png", @"YellowSprite.png", @"PurpleSprite.png"}; 

CCSprite *sprite = [CCSprite spriteWithFile:names[arc4random_uniform(4)]]; 

[self addChild:sprite];