Изменение скорости iOS 7 Sprite Kit для анимации

У меня есть runAction который анимирует SKSpriteNode . У меня есть узел, перемещающийся вверх и вниз в repeatActionForever . Я хотел бы, чтобы узел замедлялся, когда узел двигался вверх и ускорялся по мере того, как узел двигался вниз.

 [node runAction:[SKAction repeatActionForever: [SKAction sequence:@ [[SKAction speedTo:0.1 duration:0.5], [SKAction moveToY:2 * node.size.height / 3 duration:0.5], [SKAction speedTo:1 duration:0.5], [SKAction moveToY:node.size.height / 2 duration:0.5], [SKAction moveToY:node.size.height duration:1], [SKAction moveToY:node.size.height / 2 duration:1]]]]]; 

Когда я добавляю строку [SKAction speedTo:0 duration:0.5] , остальная часть кода запускается со скоростью 0 после 0,5 секунды, хотя я добавил второе действие speedTo, которое увеличило бы скорость до 1.

Проблема : как изменить скорость узла, когда узел движется, а не иметь застойную скорость для каждого направления.

Заранее спасибо.

Посмотрите на различные типы SKActionTimingMode и примените те, которые вам нужны, к вашей ситуации. Это устранит необходимость чего-нибудь вроде [SKAction speedTo:0.1 duration:0.5] .

https://developer.apple.com/library/mac/documentation/SpriteKit/Reference/SKAction_Ref/Reference/Reference.html#//apple_ref/c/tdef/SKActionTimingMode

Вы можете использовать SKActionTimingEaseOut для действия, которое заставляет узел перемещаться вверх и SKActionTimingEaseIn для действия, которое заставляет узел двигаться вниз.

 SKAction *actionMoveUp = [SKAction moveToY:2 * node.size.height / 3 duration:0.5]; actionMoveUp.timingMode = SKActionTimingEaseOut; SKAction *actionMoveDown = [SKAction moveToY:node.size.height / 2 duration:0.5]; actionMoveDown.timingMode = SKActionTimingEaseIn; SKAction *actionMoveUpHalf = [SKAction moveToY:node.size.height duration:1]; actionMoveUp.timingMode = SKActionTimingEaseOut; [node runAction:[SKAction repeatActionForever: [SKAction sequence:@ [actionMoveUp, actionMoveDown, actionMoveUpHalf, actionMoveDown]]]]; 
  • Показать приостановленный SKScene под другим полупрозрачным SKScene
  • Получить позицию Sprite в другом классе
  • найдено nil при развертывании необязательного значения - spriteKit
  • Как вызвать действие из игровой сцены
  • Swift & SpriteKit - как отображать предупреждение в GameScene
  • Действие, которое запускает аудиофайл в Sprite Kit, перестает работать после приложенияWillResignActive: вызывается
  • Сбой SKAudioNode: AVAudioPlayerNode.mm:333: Начало: требуемое условие ложно: _engine-> IsRunning ()
  • SpriteKit - рисовать динамическую линию между суставами
  • Добавление звуковых эффектов в Spritekit
  • Пауза Sprite Kit игра с физикой не работает правильно на iOS 9
  • Доступ к spritenodes, созданным в цикле for?
  • Interesting Posts

    Как использовать CoreImage для создания гладкого порогового фильтра?

    MPMoviePlayerController thumbnailImageAtTime EXC_BAD_ACCESS под iPhone 3GS iOS 4.0.1

    Остановка анимационного квадрата с кнопкой

    cocos2d push scene с переходом

    Проблема в initWithBase64EncodedString в NSData + Base64.m

    UITextView UITextViewTextDidChangeNotification не вызывается при программном изменении текста

    Эффект японского Woodblock с использованием CoreImage или GPUImage

    Есть ли способ установить свойство .skinActive ("# fefa01") для iOS-плеера (JWplayer)

    Как я могу показать уровень звука для воспроизводимого видео?

    Как создать автозагрузку NSDictionary в этом случае?

    Кнопка Round Rect в настройках

    В Swift для AnyObject, как мне установить значениеValue (), вызывается valueForKey ()

    Определите минимальное значение в массиве и найдите соответствующую строку в другом массиве

    MPMoviePlayerController освобожден, когда просмотр расширен до FullScreen

    Почему неявная анимация отсутствует, когда я добавляю подуровень к слою?

    Давайте будем гением компьютера.