2012-05-26 4 views
3

Cocos2D의 초보자로서 일부 젖소가 화면 주위를 무작위로 움직이는 iPhone 게임을 만들려고합니다. 여기에서 스프라이트를 이동하는 코드는 highoncoding.com/.../입니다. addAnimal 방법 위아 init 메소드에서 스프라이트를 추가 미안 :Cocos2D 무작위 스프라이트 이동

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

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

내 문제 : 나는 내 게임에 하나 개 이상의 소를 추가 할 때 , 그들은 다음 다른 임의의 위치에 그 랜덤 스폰 위치에서 이동 첫 번째 암소는 멈추고 다른 암소는 올바르게 진행됩니다. finishedMoving 메소드의 startAnimation 명령은 항상 마지막 스프라이트로 이동합니다. 그게 내 스프라이트에 대한 더 나은 제어가 필요하다는 것을 의미하지만 어떻게 그게 맞을까요?

+0

체크 아웃 BOIDS 몰려 알고리즘처럼 떨어지게하기 위해 addAnimal 방법을 리메이크. – 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를 생성하고 새로운 임의의 이동 부분을 시작하려면 다시 호출됩니다.

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

Morion에게 감사드립니다. 나를 위해 완벽하게 작동합니다. – duenny

+0

당신은 오신 것을 환영합니다. 다른 사람들이 나중에 찾을 수 있도록 올바른 답을 표시 할 수 있습니다. – Morion

관련 문제