Здравствуйте товарищи разработчики!!
Столкнулся с проблемой анимации 3Д-объектов в SpriteKit.
Суть в следующем: Есть проект 2Д-игры, использующий SpriteKit.
SpriteKit допускает использование 3Д объектов при рендеринге 2Д сцен. Вот код, начисто переписанный с сайта Apple Developer:
let scnScene: SCNScene = {
let scnScene = SCNScene()
let geometry = SCNTorus(ringRadius: 100, pipeRadius: 25)
let torus = SCNNode(geometry: geometry)
torus.position = SCNVector3(x: 0, y: 0.0, z: 0.0)
torus.eulerAngles = SCNVector3(x: Float.pi/2, y: 0, z: 0)
scnScene.rootNode.addChildNode(torus)
return scnScene
}()let node = SK3DNode(viewportSize: CGSize(width: 100, height: 100)) node.scnScene = scnScene node.position = CGPoint(x: 100, y: 100) node.zPosition = 5 addChild(node)
До этого момента все хорошо и способ работает. Проблемы начинаются, когда я пытаюсь анимировать 3Д объект в scnScene:
let scnScene: SCNScene = {
let scnScene = SCNScene()
let geometry = SCNTorus(ringRadius: 100, pipeRadius: 25)
let torus = SCNNode(geometry: geometry)
torus.position = SCNVector3(x: 0, y: 0.0, z: 0.0)
torus.eulerAngles = SCNVector3(x: Float.pi/2, y: 0, z: 0)
scnScene.rootNode.addChildNode(torus)
let rotate = SCNAction.rotate(by: CGFloat.pi * 2, around: SCNVector3(x: 0.0, y: 1.0, z: 0.0), duration: 5.0)
torus.runAction(SCNAction.repeatForever(rotate))
return scnScene
}()
Анимация создается и работает. Но только почему то в это же время происходят пульсации масштаба 2Д-ноды. Причем ощутимая. Примерно процентов 30-35.
Кто нибудь может подсказать - в какую сторону копать? Этой проблемы я не нашел даже на StackOverflow.
Заранее спасибо!