【发布时间】:2016-06-28 06:58:43
【问题描述】:
我有一个简单的球体和一个UITapGestureRecognizer。点击时,我想施加一个力,使球体远离相机。
func sceneTapped(recognizer: UITapGestureRecognizer) {
let sceneView = self.view as! SCNView
let location = recognizer.locationInView(sceneView)
let results = sceneView.hitTest(location, options: nil)
if results.count > 0 {
let result = results[0] as SCNHitTestResult
let node = result.node
if (node.name == "foo") {
let force = SCNVector3(0, 0, -3) // <-- Not correct. How to calculate?
node.physicsBody?.applyForce(force, impulse: true)
}
}
}
我可以在我硬编码的任何随机方向上移动球(参见上面的注释行),但我将如何计算“远离相机”?
我尝试从相机(我认为它正在寻找的位置)沿 -z 方向获取一个向量,并尝试将其转换为我感兴趣的节点的向量:
let force = SCNVector3(0, 0, -3)
let convertedForce = node.parentNode!.convertPosition(force, fromNode: cameraNode)
node.physicsBody?.applyForce(convertedForce, impulse: true)
这不起作用。节点向错误的方向移动。
【问题讨论】:
-
我突然想到,如果我只知道相机所面对的当前方向的矢量是什么,那就是我想要的(或者我可以转换到适当的坐标空间)。但我也不确定如何获得它。
标签: ios swift scenekit skphysicsbody