我为每个对象(SKSpriteNode
)设置了一个方法,我在其中设置了它的图像,位置,名称等。
这会随机添加到场景中。因为有很多对象会导致代码过多。
它有效,但我更喜欢只有一种方法可以在随机时间点向场景添加随机SKSpriteNode。我想我还需要另一个方法来定义所有SKSpriteNodes及其图像和其他设置。
我一直在尝试创建所有对象的数组,并且有一个方法从该数组中选择一个随机对象并将其添加到场景中,但我无法使其工作。
编辑: 对不起,因为不够具体。如果将对象添加到数组是将随机对象添加到场景的最佳方法,我的问题是如何使用这些SKSpriteNodes创建数组。如果使用数组不是一种方法,我如何创建一个随机节点,并在随机时间点将其创建到场景中?
答案 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];
}