1

ランダムなスプライトを生成して画面上を移動したい。

CGRectIntersectsRectプレイヤーとランダムに生成されたスプライトの間の衝突を検出するために使用しています。

私はこれを行いました.コードは正常に動作します-間隔が設定されている場合。

ただし、スプライトのスポーン時間にランダム性を追加すると、衝突が常に機能するとは限りません。ほとんどの衝突はまったく機能しません。

何が間違っているのかわからないので、正しい方向への助けに本当に感謝しています。

スケジュール間隔と、スプライトが画面上を移動するのに実際にかかる時間と関係があると思います。

よくわかりません。

enemySpriteまた、可能であれば、シーンが画面から消えた後にシーンから削除する最良の方法も知りたいですか?

これが私のコードです:

-(void)targetTimer {
[self schedule: @selector(enemySprite:) interval: 3.0f];
}

-(void)enemySprite:(id)sender {

CGSize winSize = [[CCDirector sharedDirector] winSize];

//SPAWN ENEYMY
enemySprite = [CCSprite spriteWithFile:@"eneymySprite.png"];
enemySprite.position = ccp (winSize.width/16, winSize.height/5);
[self addChild:enemySprite z:300];


CCAction *moveEnemyRight = [CCMoveTo actionWithDuration:3 position:ccp (winSize.width/1, winSize.height/5) ];
[enemySprite moveEnemyRight];

if ( enemySprite.position.y >= winSize.width ) {

    //Best Way to Remove enemySprite from Scene?

}





NSLog(@"Collision");


[self unschedule:@selector(enemySprite:)];
unsigned int t = arc4random()%4 + 1;
[self schedule:@selector(enemySprite:) interval: t];
}
4

1 に答える 1

1

敵がゲームエリア(あなたの場合は画面)を離れるかどうかを確認できるように、敵の配列を作成する必要があります。あなたのコードではこの部分

if ( enemySprite.position.y >= winSize.width ) {

    //Best Way to Remove enemySprite from Scene?

}

呼び出されることはありません。なぜなら、このスプライトを作成して、座標を使用してゲームエリアに配置したときと同じに enemySprite.position.y >= winSize.widthなるからです。NO

ccp(winSize.width/16, winSize.height/5)
于 2012-08-28T11:28:22.717 に答える