【发布时间】:2016-05-16 03:46:50
【问题描述】:
目标是在 SceneKit 中模拟一个摄像头,让用户通过平移屏幕来平移摄像头的视点。
下面的代码模拟了相机在水平方向上的平移,但是你如何解释同时在垂直方向上的平移?
你会不会只连接另一个旋转,但改变 X 轴并基于 translation.y(以获取用户垂直平移的数量)?还是有更好的办法?
func doPan(sender: UIPanGestureRecognizer) {
// Get horizonal pan distance & convert to radians
let translation = sender.translationInView(sender.view!)
var xRadians = GLKMathDegreesToRadians(Float(translation.x))
// Rotate camera
xRadians = (xRadians / 20) + currentAngle
cameraNode.transform = SCNMatrix4MakeRotation(xRadians, 0, 1, 0)
// Update preview block
setPreviewBlock(cameraNode.position)
// Save value for next rotation
if (sender.state == UIGestureRecognizerState.Ended) {
currentAngle = xRadians
}
}
【问题讨论】: