私はiPhone用のゲームに取り組んでおり、大きな問題にぶつかっています。ゲームは次のように動作します。プレイヤーは画面の下部にあるキャラクターをコントロールします。キャラクターを前後に動かして、画面の上から落ちてくるボールを捕まえます。これらのボールはすべてスクリーンの下に移動する配列の一部です。それらはすべて同じポインタを持ちます。 *玉。メソッドが呼び出されると、新しいボールが作成されます。ボールがキャラクターと衝突すると、ボールは別のキャラクターの上に積み重なります。これを行うには、それらを移動する配列から削除し、X位置を文字と等しくし、Y位置が衝突した位置にすることによって、それらをスタックの一部にする別の配列に追加します。私の問題は、画面全体が下にスクロールする必要があるスタックが大きくなるにつれてです。キャラクターがスクリーンから消えて、ボールが1つずつ追加されると、下の1つのボールも画面の下に移動します。一度に3つのボールのみを画面に表示します。私は2番目の配列を移動させようとしましたが、それらのすべてが同じ位置にあり、したがって "スタック"を破壊します。以下は私の更新メソッドです。この仕事をどうやって行うのか教えてください。私はこれに少し新しいですので、良いexplainationは大いに感謝しています!同じ配列の人に電話をかけるcocos2d iphone
おかげ タナー
if (CGRectIntersectsRect(SealRect, BallRect)) {
BallIsMoving = NO;
BallHasIntersectedSeal = NO;
//BallIntersectedSeal = YES;
[self CollisionRectUpdate];
NumberOfCollisions = NumberOfCollisions + 1;
Ball.position = ccp(SealSprite.position.x + 10, SealSprite.position.y + 20 + (NumberOfCollisions * 60));
[BallArray_ removeObject: Ball];
[BallHasCollidedArray_ addObject: Ball];
}
}
for (CCSprite *Ball in BallHasCollidedArray_) {
Ball.position = ccp(SealSprite.position.x + 10, Ball.position.y);
}
for (CCSprite *SealSprite in AllObjectsArray_) {
if (NumberOfCollisions > 3) {
FullScreenDisplacementSeal = (NumberOfCollisions - 4) * -60;
if (SealSprite.position.y > FullScreenDisplacementSeal) {
SealSprite.position = ccp(SealSprite.position.x, SealSprite.position.y - 5);
}
}
}
for (CCSprite *Ball in BallHasCollidedArray_) {
if (NumberOfCollisions > 3) {
FullScreenDisplacement = (NumberOfCollisions - 4) * 60;
Ball.position = ccp(Ball.position.x, Ball.position.y - FullScreenDisplacement);
}
}
}
私はまだ個別に各1に作用しながら、BallHasCollidedArray内のすべての「ボール」に基づいて行動する方法が必要ですね。 5000ボールがあってもまだ動作するように表現する必要があります。
ありがとうございました!私はまだいくつかの問題を抱えています。私は私の質問のコードを更新しました。今度は最初に動作するように見えますが、ボールは積み重ねられ、第4コーションではシールとスタック全体が動くように動きますが、60点後にシールが止まり、ボールは続行します。同じ場所で。シールは1つしかないので、私のシールはうまくいきます。しかし、私は複数のボールがあるので、同じ方法を使用することはできません。 もう一度お世話になりました。 Tanner –
私はそれをクリアしたと思います。あなたの助けをありがとう! –
あなたは大歓迎です:) – Mac