【发布时间】:2018-03-20 16:11:09
【问题描述】:
我的节点设置:
let node = SCNNode()
node.position = SCNVector3(0.0, 0.0, 0.0)
然后我希望将节点向左旋转 90 度,这可以通过以下方式实现:
node.transform = SCNMatrix4Rotate(node.transform, .pi/2, 0.0, 1.0, 0.0)
接下来,我想将节点相对于当前旋转沿负 z 轴向前平移一个单位,最终得到:
node.position = SCNVector3(-1.0, 0.0, 0.0)
我不知道如何以编程方式从节点的旋转到节点的位置。
基本上node从(0, 0, 0)开始,它的前向向量是-z轴,node左转向前移动一个单位到(-1, 0, 0)结束。
这不起作用:
func move(_ direction: moveDirection) {
switch direction {
case .forward: characterNode.position = SCNVector3(characterNode.position.x, characterNode.position.y, characterNode.position.z - 1.0)
case .left: characterNode.pivot = SCNMatrix4Rotate(characterNode.pivot, -.pi/32, 0.0, 1.0, 0.0)
case .backward: characterNode.position = SCNVector3(characterNode.position.x, characterNode.position.y, characterNode.position.z + 1.0)
case .right: characterNode.pivot = SCNMatrix4Rotate(characterNode.pivot, .pi/32, 0.0, 1.0, 0.0)
}
}
【问题讨论】:
标签: swift swift4 scenekit scnnode