3

Cocos2Dの非常に初心者として、私は何頭かの牛が画面上をランダムに動き回るiPhoneゲームを作ろうとしています。ここからスプライトを移動するためのコードを使用しました:highoncoding.com/.../。addAnimalメソッドを使用してinitメソッドにスプライトを追加しています。

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

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

私の問題:ゲームに複数の牛を追加すると、それらはそのランダムなスポーン位置から別のランダムな位置に移動し、最初の牛は停止し、他の牛は正しく進みます。finishMovingメソッドのstartAnimationコマンドは、常に最後のスプライトに移動します。つまり、スプライトをより適切に制御する必要がありますが、それを正しく行うにはどうすればよいですか?

4

1 に答える 1

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メソッドを次のようにsmthに作り直します

- (void) addAnimal
{
    Cow* newCow = [Cow node];
    [newCow setPosition: [self generateRandomPosition]];
    [self addChild: newCow];
}
于 2012-05-26T17:53:46.337 に答える