3

作为 Cocos2D 的初学者,我正在尝试制作一个 iPhone 游戏,其中一些奶牛在屏幕上随机移动。我使用了从这里移动精灵的代码:highoncoding.com/.../。我通过 addAnimal 方法在 init 方法中添加精灵:

-(void) addAnimal {
animal = [CCSprite spriteWithFile:@"cow.png"];
animal.position = [self generateRandomCoordinates];

[self addChild:animal];
[self startAnimation:animal];
}

我的问题:当我在游戏中添加多头奶牛时,它们会从那个随机生成位置移动到另一个随机位置,然后第一头奶牛停止,另一头奶牛正确继续。finishedMoving 方法中的 startAnimation 命令总是转到最后一个精灵。这意味着我需要更好地控制我的精灵但是如何做到这一点呢?

4

1 回答 1

4

您可以尝试实现动物类,它将包含您的精灵并封装随机运动。喜欢

@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];
}
于 2012-05-26T17:53:46.337 回答