Как применить SCNLookAtConstraint?
Я хочу убедиться, что прожектор всегда направлен на корневой узел сцены. Однако простое добавление SCNLookAtConstraint к легкому узлу, похоже, не работает. Я даже пытался включить блокировку карданного подвеса, но я все еще могу вращать узел после применения ограничения. Чтобы сделать ориентацию светового узла более очевидной, я добавил длинную рамку.
// Set up light
let light = SCNLight()
light.castsShadow = true
light.type = .spot
light.intensity = 1000
let lightNode = SCNNode()
lightNode.light = light
lightNode.position = SCNVector3(5, 5, -5)
lightNode.geometry = SCNBox(width: 0.1, height: 1, length: 0.1, chamferRadius: 0.0)
// Add constraint
let constraint = SCNLookAtConstraint(target: scene.rootNode)
constraint.isGimbalLockEnabled = true
constraint.isEnabled = true
lightNode.constraints? = [constraint]
lightNode.rotation = SCNVector4(0, -1, -1, CGFloat.pi / 2)
scene.rootNode.addChildNode(lightNode)
Чтобы продемонстрировать, что ограничение (и блокировка карданного подвеса) не работает, вот изображение без lightNode.rotation = SCNVector4 (0, -1, -1, CGFloat.pi / 2):