2012-05-26 222 views
3

作爲Cocos2D的初學者,我試圖製作一款iPhone遊戲,其中一些奶牛在屏幕上隨機移動。我使用代碼從這裏移動精靈:highoncoding.com/.../。 I'm添加在init方法精靈WIA的addAnimal方法:Cocos2D隨機精靈運動

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

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

我的問題: 當我比一頭牛添加到我的比賽,他們從隨機產卵位置移動到另一個隨機位置,然後第一頭牛停下來,另一頭牛繼續正常行走。 finishedMoving方法中的startAnimation命令始終保留到最後一個精靈。這意味着我需要更好地控制我的精靈,但是如何達到這個目標?

+0

退房類鳥羣植絨算法。 – tallen11

+0

我會在稍後當我更熟悉Cocos2D時嘗試。謝謝! – duenny

回答

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方法SMTH像

- (void) addAnimal 
{ 
    Cow* newCow = [Cow node]; 
    [newCow setPosition: [self generateRandomPosition]]; 
    [self addChild: newCow]; 
} 
+0

謝謝Morion。爲我完美工作。 – duenny

+0

不客氣。您可以將我的答案標記爲正確,以幫助其他人稍後再找到答案。 – Morion