SpriteKit выключает/включает узел каждые x секунд и прячет, когда выключен

Я уверен, что это довольно просто, но я долго пытался найти лучший способ реализовать этот эффект в SpriteKit. У меня есть лазерный узел, который я хочу выключать и включать каждые x # секунд. Я пытался настроить SKActions для отключения звука и постепенного исчезновения изображения, но я не уверен, как заставить узел знать о погоде, в которой он сейчас выключен или включен в SKAction. Я предполагаю, что я ищу какой-то тип обратного вызова, когда каждый SKAction в моем runAction завершается. Таким образом, я мог бы установить флаг, чтобы сказать, что лазер включен или выключен, и использовать его, когда происходит столкновение, чтобы я знал, как с этим справиться. Я не уверен, что это лучший способ сделать это. Спасибо за вашу помощь.


person DaveB    schedule 15.03.2014    source источник


Ответы (1)


Для всех, кому интересно, чего мне не хватало, так это runBlocks. ruNBlacks — это SKActions, запускающие фрагмент кода. Я добавил блоки запуска перед включением и выключением лазера, чтобы он мог обновлять свой статус. Похоже, это будет отлично работать!

    SKAction *soundAction = [SKAction playSoundFileNamed:@"Laser.m4a" waitForCompletion:NO];
    SKAction *fadeInAction = [SKAction fadeInWithDuration: .5];
    SKAction *firstWaitAction = [SKAction waitForDuration:1.5];
    SKAction *fadeOutAction = [SKAction fadeOutWithDuration: .5];
    SKAction *secondWait1Action = [SKAction waitForDuration:2];

    SKAction *laserAnimAction = [SKAction sequence:@[
        [SKAction runBlock:^
        {
            self.isOn=YES;
        }],
        soundAction,
        fadeInAction,
        firstWaitAction,
        [SKAction runBlock:^
        {
            self.isOn=NO;
        }], fadeOutAction,
        secondWaitAction
        ]];
person DaveB    schedule 15.03.2014