2012-02-10 25 views
1

2dゲームを作っています。スプライトのインスタンスが画面上をランダムに飛ぶ必要があります。 iPhoneの画面の境界を超えて無作為に出現し、画面内を移動します。彼らは端に当たったとき、彼らは反対側に戻って表示されます。私が知る必要があるのは、スプライトをランダムに動かす方法だけです。スプライトを画面全体に無作為に移動させる

答えて

1

あなたの層のクラスにこのメソッドを追加します - それはスプライトを取り込み、その後、永遠に画面の周りにランダムに移動します。

-(void)moveRandom:(CCSprite*)s 
{ 
    CGPoint randomPoint = ccp(arc4random()%480, arc4random()%320); 
    NSLog(@"%@", NSStringFromCGPoint(randomPoint)); 

    [s runAction: 
    [CCSequence actions: 
     [CCMoveTo actionWithDuration:arc4random()%5+1 position: randomPoint], 
     [CCCallBlock actionWithBlock:^{ 
     [self performSelector:@selector(moveRandom:) withObject:s afterDelay:0.5]; 
     }], 
     nil] 
    ]; 
} 

あなたはそれが非常に簡単です見ることができるように - 画面上のランダム点を生成しますスプライトの移動アクションをそのポイントまで実行します。それが終わったら - ちょうど繰り返す。画面上のスプライトを追加し、プロセスを開始し、あなたのシーンのinitメソッドでは(おそらく)これを入れたり、シーンの初期化を行う場所にするには

:このため

CCSprite* s = [CCSprite spriteWithFile:@"yourImage.png"]; 
[self addChild: s]; 
[self moveRandom:s]; 
+0

おかげで、それが見事に動作します。 – akuritsu

+0

スプライトが一定の速度で動くようにする方法を知っていますか?また、スプライトが滑らかに動くようにすることもできます。私はそれをスムーズに動かすことによって何を意味するのかは、本当に遠く離れたポイントに行くのではなく、より多くのポイントにもっと頻繁に移動するようにすることです。 CGPoint randomPoint = ccp(arc4random()%480、arc4random()%320); – akuritsu

+0

いいえ、480と320は画面の幅と高さですので、この行は画面内にランダムな位置を生成しています(元の質問ごとに)。これとは別のアプローチが必要です。 –

関連する問題