Приятные анимации и флоу взаимодействия для пользователя часто будут решающим фактором при выборе вашего приложения среди прочих.
Например, одна из самых кайфовых анимаций прошлой оси - это tap to cash.
Её можно реализовать и на Metal, и на SpriteKit.
В этот раз решил пойти вторым путём. Для этого можно юзать эффект турбулентности с помощью turbulenceField. В отличие от аналогичного с шумом наша сила будет пропорциональна скорости объекта внутри нашего поля.
Для того, чтобы создать эффект завихрения можно юзать любую интервальную функцию (в своём решении я запилил несложный аналог осциллограммы через
sin(currentTime * EmitterConstants.oscillationMultiplier).Для оптимизации распадающихся цифр (вообще тут тоже можно юзать любое вью/картинку и так далее) можно чекнуть массив пикселей (пригодится CGContext, можно почитать тут) из нашей картинки с определённым шагом для производительности (если идти по каждому, можно словить нефиговые лаги) и использовал эти позиции для формирования наших частиц. А на фоне просто-напросто дополнительный SKEmitterNode.
Ещё прикрутил реакцию на наклон девайса из стороны в сторону и вверх-вниз для небольшого эффекта смещения.
📖 А для трансформа кнопок добавил немного фич из новой 26 оси (в этом посте писал подробнее).
Весь код и рабочий пример по традиции уже доступен в закрытой базе:
Можно подписаться в ⭐️ в телеграме или 💰 с приятными условиями на бусти.
🧠 Что вы получите уже сейчас:
➡️Карта изучения Swift Concurrency (примеры, разбор каждого уровня, полезные советы)
➡️Вопросы на чтение кода (несколько уровней: простых, посложнее)
➡️Многопоточность
➡️DispatchQueue: практические вопросы
➡️Swift Concurrency
➡️Алгоритмы: терминология и примеры + путь Яндекс Coderun (разбор нескольких десятков задач)
➡️Память: ARC, side table, флаги, утечки
➡️Результаты зарплатного опроса в нашем канале + сравнение с европейскими реальными зарплатами в iOS
➡️Разбор подходов к анимациям и лучшие паттерны (классические способы, Metal, комбинации - все подкреплено кодом)
➡️Утечки памяти в Swift: что с ними делать, как предотвратить?
➡️Навигация в SwiftUI: типы, отличия, разбор неочевидных моментов
😃 iOS Dev