0

iPhone ゲームを作成しようとしていますが、別の位置にランダムな画像を追加しようとしています。

これが私がやりたいことです 6つの異なる色の楕円形のノード(敵)があります ゲームの開始時に、5つの敵ノードが必要です。

プレイヤー ノードが敵ノードに接触すると、敵ノードは消え、すぐに別の敵ノードが別の場所に追加されます。

しかし、いくつかのノードが同じ場所に表示されることがあるため、5 つではなく 4 つのノードがあるように見えます。特定の場所にノードが既にある場合、そこに別のノードを追加するのではなく、別の場所に追加するにはどうすればよいですか?
以下に、私が書いたコードの一部を追加しました。とても簡単なことかもしれませんが、私はプログラミングが初めてで、それを理解できませんでした。

ありがとうございました、

-(void) addWaterBall { for (int i = 0; i < 5; i++) {

NSUInteger randomWaterBall = [Util randomWithMin:0 max:8];
WaterBall *waterBall = [WaterBall waterBallOfType:randomWaterBall];


float y = self.frame.size.height - ((((self.frame.size.height/2)-10)/10) * [Util randomWithMin:1 max:10]);
float x = (self.frame.size.width/10) * [Util randomWithMin:1 max:10];

 waterBall.position = CGPointMake(x, y);


 waterBall.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:waterBall.size.width/2];
 waterBall.physicsBody.dynamic = YES;
 waterBall.physicsBody.affectedByGravity = NO;



waterBall.physicsBody.categoryBitMask = waterBallCategory;
waterBall.physicsBody.contactTestBitMask = sharkCategory  ;
//waterBall.physicsBody.collisionBitMask = ;


        [self addChild:waterBall];

 }
}
4

2 に答える 2

0

私がすることは[self enumerateChildNodesWithName…….]、ランダム座標を生成した後に固執し、ランダムな x 座標と y 座標を列挙された各ノードの座標と比較し、それらが同じか近すぎる場合は、新しいランダム座標を生成することです。これは、while ループで行うのがおそらく最適です。

于 2014-09-23T09:20:30.127 に答える
0
-(void)addWaterBall
{
NSUInteger randomWaterBall = [Util randomWithMin:0 max:8];
WaterBall *waterBall = [WaterBall waterBallOfType:randomWaterBall];
waterBall.name = @"WaterBall";


    [self enumerateChildNodesWithName:@"WaterBall" usingBlock:^(SKNode *node, BOOL *stop) {


        float y = self.frame.size.height - ((((self.frame.size.height/2)-10)/10) * [Util randomWithMin:1 max:10]);
        float x = (self.frame.size.width/10) * [Util randomWithMin:1 max:10];

        node.position = CGPointMake(x, y);


        node.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:waterBall.size.width/2];
        node.physicsBody.dynamic = YES;
        node.physicsBody.affectedByGravity = NO;



        node.physicsBody.categoryBitMask = waterBallCategory;
        node.physicsBody.contactTestBitMask = sharkCategory  ;
        //waterBall.physicsBody.collisionBitMask = ;


        [self addChild:waterBall];
    }];

}
于 2014-09-23T10:39:45.407 に答える