将节点设置为随机Y位置而不重叠

时间:2015-01-20 18:12:25

标签: ios swift sprite-kit

我想创建不同Y值的节点而不重叠。世界节点剂量移动,所以我不能在循环中递增Y值,因为我希望位置是随机的

//我用来创建随机数的函数

func randRange (lower: Int , upper: Int) -> Int {
   return lower + Int(arc4random_uniform(UInt32(upper - lower + 1)))
}

//在随机Y位置创建节点

for var i = 0; i < 4; i++
{

    var minY:Int = -Int(self.frame.size.height / 2 );
    var maxY:Int = Int(self.frame.size.height / 2);
    var y:CGFloat = CGFloat(randRange(minY, upper:maxY));

    var node: SKSpriteNode = SKSpriteNode(color: UIColor.whiteColor(), size: CGSizeMake(50, 5));
    node.position = CGPointMake(self.frame.size.width/2 + node.frame.size.width/2, y);
    world.addChild(node);

}
  1. 解决方案一
  2. 创建一个数组并将每个Y位置放在那里并检查是否已经设置。然后节点离开屏幕将其从阵列中删除

    但我不知道如何在数组中搜索并从中删除

    有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

以下是搜索数组的代码:

for(int i=0;i<arrayNode.count;i++)
{
    if(arrayNode[0].yPosition == randomNumber) //Random number
          //Pick another number
}

从数组中删除可能会有点棘手。但是,如果将数组设为NSMutableArray,则可以访问removeObject:方法。当您需要删除节点时,您可以访问它,可能是通过某个联系事件。您可以将此节点传递到:

[arrayNode removeObject: yourNode];