ARKit 是苹果公司开发的增强现实(AR)框架,用于在 iOS 设备上构建 AR 应用。raycastQuery
和 hitTest
都是 ARKit 中用于检测用户交互和物体碰撞的方法。
raycastQuery
通常比 hitTest
更高效,尤其是在复杂场景中。raycastQuery
提供了更多的控制选项,例如可以指定光线的起点、方向和长度。hitTest
已经被标记为弃用,使用 raycastQuery
可以确保代码在未来版本的 ARKit 中仍然有效。hitTest
被弃用?原因: hitTest
方法在处理复杂场景时性能较差,并且苹果公司希望开发者使用更现代和高效的方法。
解决方法: 使用 raycastQuery
替代 hit镜像Test
。
以下是一个使用 raycastQuery
的示例代码:
import ARKit
class ViewController: UIViewController, ARSCNViewDelegate {
@IBOutlet var sceneView: ARSCNView!
override func viewDidLoad() {
super.viewDidLoad()
sceneView.delegate = self
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
guard let touchLocation = touches.first?.location(in: sceneView) else { return }
let raycastQuery = ARRaycastQuery(origin: sceneView.pointOfView!.position, direction: sceneView.pointOfView!.forward)
let results = sceneView.session.raycast(raycastQuery)
if let result = results.first {
let node = result.node
print("Tapped node: \(node.name ?? "")")
}
}
}
通过使用 raycastQuery
,你可以获得更好的性能和更多的控制选项,同时确保代码在未来版本的 ARKit 中仍然有效。
领取专属 10元无门槛券
手把手带您无忧上云