1

我偶然发现了一个问题,但我找不到答案。我正在使用 Xcode 中的 SK 模板来创建 iOS 游戏。我是初学者,所以请耐心等待。

基本上我有这个代码:

SKAction *releaseBubbles = [SKAction sequence:@[
                                                    [SKAction performSelector:@selector(createBubbleNode)onTarget:self],
                                                    [SKAction waitForDuration:speed]]];
[self runAction: [SKAction repeatAction:releaseBubbles
                                      count:300]];

执行于

-(id)initWithSize:(CGSize)size {
    if (self = [super initWithSize:size]) {

我将级别更改为我的游戏-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {,当我更改级别时,它也应该更改该速度参数。当然,这不起作用,因为我相信我的动作是在场景初始化时开始的,而我永远无法切换参数。

我需要做的是以一定速度(相对于水平)出现的气泡不断填充屏幕。

我真的不知道如何解决这个问题,因为在我看来我需要以某种方式停止并重新启动动作序列......

期待您的宝贵意见。

4

1 回答 1

1

要不断用气泡填充屏幕,您可以update:使用SKScene. 这是如何做到的。

首先,添加一个属性,该属性将存储您上次添加气泡的日期。

@property(nonatomic, strong) NSDate *lastBubbleCreationDate;

然后,将您的update:方法更改为:

-(void)update:(CFTimeInterval)currentTime
{
    // Create new bubble every 5s.
    if (ABS([_lastBubbleCreationDate timeIntervalSinceNow]) > 5)
    {
        [self createBubbleNode];
    }
}

最后,在您的createBubbleNode方法中,您必须存储创建最后一个气泡的时间:

-(void)createBubbleNode
{
    // Your code here

    // Set the date to now.
    _lastBubbleCreationDate = [NSDate date];
}

您还需要调用createBubbleNode设置初始值_lastBubbleCreationDate。您可以在didMoveToView:方法中执行此操作。只需将此方法添加到您的场景实现中:

- (void)didMoveToView:(SKView *)view
{    
    // Creates first bubble and sets the initial value of the _lastBubbleCreationDate
    [self createBubbleNode];
}

在下一个级别中,您可以更改5s值以更频繁地创建气泡,这将使游戏更加困难。

于 2014-02-22T23:39:03.210 回答