向场景中添加随机SKSpriteNode

时间:2014-02-11 15:22:46

标签: ios objective-c sprite-kit

我为每个对象(SKSpriteNode)设置了一个方法,我在其中设置了它的图像,位置,名称等。 这会随机添加到场景中。因为有很多对象会导致代码过多。

它有效,但我更喜欢只有一种方法可以在随机时间点向场景添加随机SKSpriteNode。我想我还需要另一个方法来定义所有SKSpriteNodes及其图像和其他设置。

我一直在尝试创建所有对象的数组,并且有一个方法从该数组中选择一个随机对象并将其添加到场景中,但我无法使其工作。

编辑: 对不起,因为不够具体。如果将对象添加到数组是将随机对象添加到场景的最佳方法,我的问题是如何使用这些SKSpriteNodes创建数组。如果使用数组不是一种方法,我如何创建一个随机节点,并在随机时间点将其创建到场景中?

2 个答案:

答案 0 :(得分:1)

我猜你有问题从数组中选择随机对象。 请详细说明您的问题,以便我们提供更好的答案。

要从数组中获取随机对象,只需在随机选择的索引处获取一个对象,如下所示:

id randomObject = [array objectAtIndex:arc4random_uniform(array.count)];

答案 1 :(得分:0)

在viewDidLoad或您想要的位置添加此For,并将值替换为您需要的MAX_X和MAX_Y:

for (int i = 0; i < countObjects; i++)
{
    CGPoint position = (CGPoint){(arc4random() % MAX_X) + 1.0f, (arc4random() % MAX_Y) + 1.0f};
    [self createNodeWithPosition:position];
}

并添加此方法:

- (void)createNodeWithPosition:(CGPoint)point
{
    SKSpriteNode *box = [[SKSpriteNode alloc] initWithImageNamed:@"image.jpeg"];
    [box setPosition:point];
    [self addChild:box];
}