在使用Swift的SceneKit中,我只能进行一次旋转.
我想每次用户点击屏幕时在z轴上旋转相机.
func handleTap(){
println("start")
SCNTransaction.begin()
SCNTransaction.setAnimationDuration(1.0)
SCNTransaction.setCompletionBlock(){
println("done")
}
_cameraNode.rotation = SCNVector4Make(0, 0, 1, CFloat( -M_PI_4 ) * 0.5 )
SCNTransaction.commit()
}
Run Code Online (Sandbox Code Playgroud)
但是,我希望每次触摸都能保持旋转状态.我想我需要一个scnvector4乘数,但我找不到那种方法.
我如何乘以2 scnvector4s或者我可以保持旋转z轴的另一种方式?
小智 7
当我直接修改node.rotation多次时,我得到了一些奇怪的行为,
相反,似乎更可靠的工作是一些代码,如:
let xAngle = SCNMatrix4MakeRotation(degToRad(90), 1, 0, 0)
let yAngle = SCNMatrix4MakeRotation(degToRad(180), 0, 1, 0)
let zAngle = SCNMatrix4MakeRotation(degToRad(0), 0, 0, 1)
var rotationMatrix = SCNMatrix4Mult(SCNMatrix4Mult(xAngle, yAngle), zAngle)
node.transform = SCNMatrix4Mult(rotationMatrix, node.Transform)
Run Code Online (Sandbox Code Playgroud)
......有点笨重但是很有效.顺便说一句,degToRad会是这样的:
func degToRad(deg: Float) {
return deg / 180 * Float(M_PI)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5004 次 |
| 最近记录: |