Установите минимальную продолжительность действия набора спрайтов

#sprite-kit #duration #skaction

#набор спрайтов #Продолжительность #skaction

Вопрос:

Я реализовал следующий метод в своей игре с набором спрайтов:

 -(void) sprayWater{  
    [self runAction:[SKAction repeatActionForever:[SKAction animateWithTextures:self.runWasserFrames timePerFrame:0.05 resize:YES restore:YES]] withKey:@"water"];    
}
  

Какой самый элегантный способ установить минимальное время этого действия равным 1,5 секундам?
Я попробовал несколько способов, но пока у меня ничего не получилось.

Комментарии:

1. что вы подразумеваете под минимальным временем? Действие выполняется либо бесконечно (через repeatforever), либо в течение определенного времени

2. Я вызываю этот метод выше в touchesBegan-методе. Пока экран нажат, главный герой разбрызгивает воду. Все работает нормально, но когда вы нажимаете на экран с высокой частотой, частота кадров падает до 30 кадров в секунду. Я хотел бы предотвратить это, установив минимальное время для этого действия, при котором вызывается метод, а касания тем временем бесполезны, поэтому они не влияют на частоту кадров. Определенная продолжительность не соответствует моим потребностям, потому что вода должна распыляться до тех пор, пока нажат экран. Не могу придумать никакой возможности исправить эту проблему…

Ответ №1:

Если я правильно понимаю проблему, вам следует попробовать что-то вроде этого :

 -(void) sprayWater
{  

        if ([self actionForKey:@"water"] == nil)
        {
             [self runAction:[SKAction repeatActionForever:[SKAction animateWithTextures:self.runWasserFrames timePerFrame:0.05 resize:YES restore:YES]] withKey:@"water"];   
        } 
}
  

Логика в том, что если вода уже течет, не создавайте другое действие.