HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 如何计算远离相机的矢量?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个简单的球体和一个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,-3) // <-- Not correct.  How to calculate?
      node.physicsBody?.applyForce(force,impulse: truE)
    }
  }
}

我可以在任何随机的方向移动球我硬编码(见上面的注释),但我怎么去计算“远离相机”?

我尝试从相机中取出-z方向的矢量(我认为它正在寻找它)并尝试将其转换为我感兴趣的节点的矢量:

let force = SCNVector3(0,-3)
    let convertedForce = node.parentNode!.convertPosition(force,fromNode: cameraNodE)
    node.physicsBody?.applyForce(convertedForce,impulse: truE)

这不起作用.节点以错误的方向移动.

解决方法

SCNView的 pointOfView属性将返回对场景中包含摄像头的节点的引用.正是这个节点的变换矩阵决定了摄像机的视图.那你可以 pull the z-axis out of this matrix.

func cameraZaxis(view:SCNView) -> SCNVector3 {
    let cameraMat = view.pointOfView!.transform
    return SCNVector3Make(cameraMat.m31,cameraMat.m32,cameraMat.m33)
}

applyForce在全局坐标系中应用force,所以在这种情况下我不相信你需要跨坐标系转换它.

大佬总结

以上是大佬教程为你收集整理的ios – 如何计算远离相机的矢量?全部内容,希望文章能够帮你解决ios – 如何计算远离相机的矢量?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。