Я пытаюсь получить переходный эффект, подобный тому, что в супер игре Марио запустить Нинтендо в комплект спрайтовРасширение круга эффект рубильник переход в Spritekit
Я просто хочу круг рубильник, чтобы расширить Раскрывая следующей сцены или просто показывая текущую сцену. Это недоступно как один из стандартных переходов набора спрайтов iOS.
Я сделал это с полностью черным слоем, покрывающим всю сцену, и используя SKCropNode для анимации расширяющегося круга, чтобы показать сцену.
Ниже приведен код, который находится в didMove(to view: SKView)
let fullScreen = SKSpriteNode(color: .black, size: self.size)
let mask = SKSpriteNode(color: .black, size: self.size)
let circle = SKShapeNode(circleOfRadius: self.size.height/2)
circle.fillColor = .white
circle.blendMode = .subtract
circle.setScale(0.001)
circle.isHidden = true
circle.name = "circleShape"
mask.addChild(circle)
let crop = SKCropNode()
crop.position = CGPoint(x: self.size.width/2, y: self.size.height/2)
crop.maskNode = mask
crop.name = "cropNode"
crop.addChild(fullScreen)
crop.zPosition = 100
self.addChild(crop)
let waitAction = SKAction.wait(forDuration: 2.0)
let callAction = SKAction.run({
let cropNode = self.childNode(withName: "cropNode") as! SKCropNode
let maskNode = cropNode.maskNode as! SKSpriteNode
let circleNode = maskNode.childNode(withName: "circleShape") as! SKShapeNode
circleNode.isHidden = false
let scaleAction = SKAction.scale(to: 2.0, duration: 2.0)
scaleAction.timingFunction = scaleAction.easeInQuartic
circleNode.run(scaleAction, completion: {
cropNode.removeFromParent()
})
})
let seqAction = SKAction.sequence([waitAction,callAction])
self.run(seqAction)
Это работает в тренажере, но не во время работы на устройстве (IPad про 2016 год с последней прошивкой 10). На устройстве нет расширяющегося круга, и черный слой наложения просто исчезает после завершения действия масштаба.
Мои вопросы:
1) почему это не работает на устройстве и только на тренажере?
2) есть ли лучший и эффективный способ достижения этого перехода в комплекте спрайтов?
Заранее спасибо.
Я не вижу, как ваш подход достигает желаемого результата. Вы создаете узлы спрайтов bgMask, transitionCircle и bgOverlay. Затем вы добавляете переходCircle как дочерний элемент bgMask. Где вырезать круг? как вы делаете круговое отверстие в bgMask?Я не вижу использования режимов наложения или SKCropNode. Каковы изображения изображений bgMask, transitionCircle и bgOverlay? – plawres
это 3 изображения, 16 строк кода, 1 функция. Вероятно, было бы проще попробовать этот код, чем написать этот комментарий. –
Нет режимов смешивания, без CropNodes. Просто простые глазные конфеты. Изображение окружности перехода имеет прозрачный круг (не белый, как показано на этой странице). Что касается содержимого изображения ... вы можете видеть изображения, правильно? –