IOS在不同位置添加随机节点

时间:2014-09-22 22:32:43

标签: ios position sprite-kit sknode

我正在尝试制作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];

 }
}

2 个答案:

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

}