我似乎无法弄清楚如何使用 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/