Все майские праздники я провёл за одним — рисовал кота. Хотелось, чтобы у него был характер, настроение, и немного магии 🪄
🐾 Что было сложно
Нарисовать — ещё полдела. Главное — потом правильно разбить его на части:
– хвост должен анимироваться отдельно
– зрачки двигаться в сторону курсора
– и даже поза во сне — отдельный спрайт
🛠 Как я оживил его
Перенёс всё в приложение с помощью своего простого движка анимаций на SpriteKit. Там всё кадрами — как в классике.
Пример кода тоже покажу — вдруг кому-то пригодится!
👇 Вот часть кода с загрузкой спрайтов.
final class CatLayeredView: SKScene {
let body = SKSpriteNode(imageNamed: CatMind.shared.currentSkin.imageName + "_body")
let head = SKSpriteNode(imageNamed: CatMind.shared.currentSkin.imageName + "_head")
let tail = SKSpriteNode(imageNamed: CatMind.shared.currentSkin.imageName + "_tail")
let eyes = EyesNode()
static var defaultScale: CGFloat {
CatConfig.size.width / 1024 * 10
}
private var animator: CatLayeredAnimator!
override func didMove(to view: SKView) {
super.didMove(to: view)
backgroundColor = .clear
anchorPoint = CGPoint(x: 0.5, y: 0.5)
setupLayers()
animator = CatLayeredAnimator(view: self)
animator.setPose(.init())
}
func setPose(_ pose: CatViewAppearance) {
animator.setPose(pose)
}Дальше расскажу как анимировал кота с помощью небольшого собственного движка 💪
#screencat #spritekit

