Mover SCNLight con SCNAction

Tengo un centro de atención, creado con el código debajo, proyectando sombras en todos mis nodos:

spotLight.type = SCNLightTypeSpot spotLight.spotInnerAngle = 50.0 spotLight.spotOuterAngle = 150.0 spotLight.castsShadow = true spotLight.shadowMode = SCNShadowMode.Defernetworking spotlightNode.light = spotLight spotlightNode.eulerAngles = SCNVector3(x: GLKMathDegreesToRadians(-90), y: 0, z: 0) spotlightNode.position = levelData.coordinatesForGridPosition(column: 0, row: playerGridRow) spotlightNode.position.y = 1.5 rootNode.addChildNode(spotlightNode) 

La escena se mueve a lo largo del eje z, y la camera tiene una animation infinita que lo mueve:

 let moveAction = SCNAction.moveByX(0.0, y: 0.0, z: CGFloat(-GameVariables.segmentSize / 2), duration: 2.0) cameraContainerNode.runAction(SCNAction.repeatActionForever(moveAction)) 

Sin embargo, a medida que la camera se mueve, la luz no funciona, por lo que después de un time, toda la escena está oscura. Quiero mover la luz con la camera; sin embargo, si aplico al nodo de luz la misma animation en movimiento, todas las sombras comienzan a parpadear. Traté de cambiar el SCNShadowMode para Reenviar y el tipo de luz a Direccional, pero el parpadeo todavía está allí. Con direccional, realmente pierdo la mayoría de mis sombras. Si creo un nuevo nodo de luz más adelante, parecería que tengo dos "soles", lo cual, por supuesto, es imposible. El objective final es simplemente tener una luz infinita que brille paralela a la escena desde la izquierda, proyectando todas las sombras hacia la derecha. ¿Algunas ideas?

Cree un tree de nodos para sostener tanto el foco como la camera.

Cree, digamos, cameraRigNode como un SCNNode sin geometry. Cree cameraContainerNode y spotlightNode de la misma manera que ahora. Pero hágalos hijos de cameraRigNode, no del nodo raíz de la escena.

Aplica moveAction a cameraRigNode. Tanto la camera como la luz se moverán juntas.