作为Cocos2D的初学者,我正试图制作一款iPhone游戏,其中一些奶牛在屏幕上随机移动。我使用代码从这里移动精灵:highoncoding.com/.../。我正在使用addAnimal方法在init方法中添加sprite:
-(void) addAnimal {
animal = [CCSprite spriteWithFile:@"cow.png"];
animal.position = [self generateRandomCoordinates];
[self addChild:animal];
[self startAnimation:animal];
}
我的问题: 当我向我的游戏中添加多个母牛时,它们会从该随机生成位置移动到另一个随机位置,然后第一头母牛停止,另一头母牛正常运行。 finishedMoving方法中的startAnimation命令始终指向最后一个sprite。这意味着我需要更好地控制我的精灵,但是如何做到这一点呢?
答案 0 :(得分:4)
你可以尝试实现动物类,它将包含你的精灵并封装随机动作。像Smth一样
@implementation Cow
- (id) init
{
self = [super init];
if( self != nil )
{
CCSprite* cowSprite = [CCSprite spriteWithFile:@"cow.png"];
[self addChild: cowSprite];
}
return self;
}
- (void) onEnter
{
[super onEnter];
[self makeRandomMovement];
}
- (void) makeRandomMovement
{
id randomMoveAction = // create your random move action here
id moveEndCallback = [CCCallFunc actionWithTarget: self selector: @selector(makeRandomMovement)];
id sequence = [CCSequence actionOne: randomMoveAction two: moveEndCallback];
[self runAction: sequence];
}
@end
以这种方式结束随机运动部分之后,将再次调用方法makeRandomMovement来生成并启动新的随机运动部分。
然后将你的addAnimal方法重制为像
一样- (void) addAnimal
{
Cow* newCow = [Cow node];
[newCow setPosition: [self generateRandomPosition]];
[self addChild: newCow];
}