Мощная анимация у вас под рукой
На самом деле я программировал десятилетиями — и могу честно сказать, что сегодня мне это нравится больше, чем когда-либо. Мне нравится программировать с помощью SwiftUI, в частности, потому что это весело — потому что вы можете прототипировать что-то всего за несколько часов, если не меньше.
Присоединяйтесь ко мне в этой статье, чтобы повеселиться со SwiftUI, создать… подходящий для этого года (Рождество 2021) эффект частиц, используя только мощный движок анимации в SwiftUI.
Я думаю, что ключевыми ингредиентами здесь являются режимы наложения цветов и анимация, и в прошлом месяце я написал статью о последнем — вы читали все о здесь.
Бриф
Короче говоря, я хочу создать взрыв, эффект частиц, но я не хочу использовать SpriteKit. Я хочу использовать SwiftUI. Цель создания этого —
Теперь, на что вы смотрите — ну, это частица, которая выглядит вот так — около 256 из них, если быть более точным, загружены друг на друга в ZStack, используя смешение цветов в экранном режиме. Цвет значка красный, но он становится белым, когда накладывается сам на себя. Различные оттенки белого смешиваются по-разному, поскольку положение, непрозрачность, масштаб и поворот изменяются в течение анимации, которая длится всего 4 секунды.
Я скачал его с noun project, отличного сайта для получения черно-белых иконок. Основной управляющий код выглядит так.
У меня есть структура, в которой я сохранил все значения для этой анимации, положение, непрозрачность, угол, масштаб и поворот. Для каждой частицы, которую я создаю, я подставляю значение для всех этих. Начальное значение и конечное значение.
Затем я запускаю второе представление, которое создает 256 частиц, а SwiftUI затем анимирует все свойства, которые я только что упомянул, всего за 4 секунды. Он оживляет их и перемещает каждую частицу по углу внутри круга, используя базовую математику с SIN и COS.
Конечным результатом взрыва, который вы видите здесь, является загрузка всего проекта по ссылке на битбакет, которую я даю здесь, и экспериментирование с ним. Вы сможете создавать всевозможные эффекты с помощью этого кода, просто изменяя различные параметры — параметры Range
будут иметь наибольшее значение — например, измените AngleRange
на 150, и вы получите половину взрыва. Добавьте этот код, чтобы перетасовать различные цвета на вашей частице, чтобы получить немного другой эффект. Попробуйте найти новую форму.
let colors = [Color.red, .blue, .purple, .green, .orange, .yellow, .indigo, .pink] property.color = colors.shuffled().first!
Вы должны иметь возможность создавать любые эффекты, которые вы можете получить с помощью SpriteKit, с небольшой настройкой здесь и там. Вот еще один пример:
var startPosition: CGPoint = CGPoint(x: Double.random(in: 0...UIScreen.screenWidth), y: Double.random(in: 0...UIScreen.screenHeight))
Форма позади этого выглядит так —
Все это подводит меня к концу этого короткого отрывка — получайте удовольствие, как и я.