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)
Другие вопросы по тегам