0

我正在尝试制作 iPhone 游戏,并尝试在不同位置添加随机图像。

这就是我想要做的 有 6 个不同颜色的椭圆节点(敌人) 游戏开始时我希望有 5 个敌人节点。

当玩家节点接触到敌方节点时,敌方节点会消失,然后立即在不同位置添加另一个敌方节点。

但有时一些节点出现在同一个位置,所以看起来有 4 个节点而不是 5 个。如果在特定位置已经有一个节点,我怎么能不在那里添加另一个节点,而是在其他位置添加另一个节点?
下面我添加了我写的部分代码。这可能很容易,但我是编程新手,我想不通。

谢谢,

-(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
-(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 回答
0

我要做的是[self enumerateChildNodesWithName…….]在生成随机坐标后坚持 a 并将随机 x 和 y 坐标与每个枚举节点上的坐标进行比较,如果它们相同或太接近,则生成新的随机坐标。这可能最好在 while 循环中完成。

于 2014-09-23T09:20:30.127 回答