2014-09-22 61 views
0

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

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

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

但有些时候某些节点出现在同一位置,所以它看起来像是有4个节点而不是5个。 如果某个节点已经存在于特定位置,那么我怎么能不在其他位置添加另一个节点?
下面我添加了一部分我写的代码。 这可能是非常简单的事情,但我是编程新手,我无法弄清楚。

谢谢

- (无效)addWaterBall { 的for(int i = 0;我< 5;我++){

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]; 

} 
} 

回答

0

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

+0

感谢您回应 – dorcester 2014-09-23 17:04:50

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]; 
    }]; 

} 
+0

谢谢你的回应, 我还有一个问题,我 换成你与我写的代码,但现在它给了我另外一个问题。你会看到下面。你有什么主意吗。 再次感谢 2014-09-23 12:57:10.029 WHGame [8194:432571] ***因未捕获异常'NSInvalidArgumentException'而终止应用程序,原因:'试图添加一个已有父级的SKNode:名字:'WaterBall'纹理:[0 0 0 0} size:{10,10} rotation:0.00' – dorcester 2014-09-23 17:02:36

+0

我不知道。 – 2014-09-23 19:59:34

+0

您正在向场景中已有的场景添加节点。 – 0x141E 2014-09-24 06:50:22