SCNTransformConstraint不允许限制Eulerangle

时间:2017-04-09 16:03:34

标签: swift transform scnnode

我想限制Scenekit中摄像机的角度,使摄像机不能向上看(指向天空)。出于某种原因,我没有得到正确的SCNTransformConstraint。怎么办?

    let cameraNode = SCNNode()
    let camera = SCNCamera()
    cameraNode.camera = camera
    cameraNode.position = SCNVector3(x: 0, y: 10, z: 30)

    let center = SCNNode()
    center.position = SCNVector3Make(15, 0, 10)
    let lookConstraint = SCNLookAtConstraint(target: center)
    lookConstraint.isGimbalLockEnabled = true

    // Make the constraint to not allow the camera to point upwards
    let transformConstraint = SCNTransformConstraint(inWorldSpace: true, with: {
        node, matrix in

        var newMatrix = matrix
        let currentNode = node as SCNNode

        if (currentNode.presentation.eulerAngles.x > 0) {
            newMatrix.m31 = 0.0
        }


        return newMatrix
    })

    cameraNode.constraints = [lookConstraint, transformConstraint]
    scene.rootNode.addChildNode(cameraNode)

我想我正在设置newMatrix.m31错误?

0 个答案:

没有答案