SceneKit и использование пользовательского класса камеры
Я пытаюсь создать собственный класс Camera для повторного использования на всех уровнях в SceneKit.
Я определил cameraNode Установите sceneView для использования cameraNode pointOfView
Определить класс:
класс GameCamera: SCNCamera {
let cameraNodeHorizontal: SCNNode!
override init() {
cameraNodeHorizontal = SCNScene(named: "/GameAssets.scnassets/Camera.scn")?.rootNode.childNode(withName: "GameCamera", recursively: true)
super.init()
}
func setup(scnView: SCNView) {
scnView.scene?.rootNode.addChildNode(cameraNodeHorizontal)
scnView.pointOfView = cameraNodeHorizontal
}
}
Внутри ViewController:
частная камера var = GameCamera()
private func loadCamera() {
camera.setup(scnView: self.scnView)
}
Сцена отрисовывается из стандартного pointOfView, отличного от того, который я определил.
Хотите знать, если кто-нибудь может помочь?
1 ответ
Я не использую.scn - но просто базовый класс, что-то вроде этого:
var cameraEye = SCNNode()
var cameraFocus = SCNNode()
init()
{
cameraEye.name = "Camera Eye"
cameraFocus.name = "Camera Focus"
cameraFocus.isHidden = true
cameraFocus.position = SCNVector3(x: 0, y: 0, z: 0)
cameraEye.camera = SCNCamera()
cameraEye.constraints = []
cameraEye.position = SCNVector3(x: 0, y: 15, z: 0.1)
let vConstraint = SCNLookAtConstraint(target: cameraFocus)
vConstraint.isGimbalLockEnabled = true
cameraEye.constraints = [vConstraint]
}
// Add camera and focus nodes to your Scenekit nodes
gameNodes.addChildNode(camera.cameraEye)
gameNodes.addChildNode(camera.cameraFocus)