SCNTransformConstraint

SCNTransformConstraint

我似乎无法弄清楚如何使用 SCNTransformConstraint 约束节点的 Z 值。这是我到目前为止所拥有的。

        let constraint = SCNTransformConstraint(inWorldSpace: true, withBlock:{
            node, matrix in

            var newMatrix = matrix
            let currentNode = node as SCNNode
            if (currentNode.presentationNode().position.z > 0.0) {
                newMatrix.m43 = 0.0
            }

            return newMatrix
        })

    ship.constraints = [constraint]

有了上述约束,当我对其 ship 施加力时, physicsBody 不会移动。任何帮助将不胜感激。

最佳答案

是的。这个也让我有点难受。

问题出在矩阵上。根据关于 SCNMatrix4(矩阵)参数的 Developer documentation:



取而代之的是:

var newMatrix = matrix

你真的想要:
var newMatrix = node.transform

这似乎是将要应用于节点的当前变换。

我知道这是一个老问题,但它靠近 SCNTransformConstraint 搜索结果的顶部。嘿,迟到总比不到好,对吧?

关于ios - 如何使用 SCNTransformConstraint 来限制节点的 Z 值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29859722/

10-11 06:50