Cocos2D随机精灵运动

时间:2012-05-26 17:28:42

标签: iphone objective-c random cocos2d-iphone sprite

作为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。这意味着我需要更好地控制我的精灵,但是如何做到这一点呢?

1 个答案:

答案 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];
}