我正在尝试制作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];
}
}
答案 0 :(得分:0)
我会做的是在生成随机坐标之后坚持[self enumerateChildNodesWithName…….]
并将随机x和y坐标与每个枚举节点上的坐标进行比较,如果它们相同或过于接近则生成新的随机坐标。这可能最好在while循环中完成。
答案 1 :(得分: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];
}];
}