我想用hitTest将一个物体放在我的面前,而不用触摸屏幕(比如宜家广场或Snapchat)。
有人找到解决办法了吗?
谢谢
发布于 2018-12-27 09:54:08
这是在不接触屏幕的情况下将节点放置在检测到的表面的方法。
在viewWillAppear中,将配置添加到ARSCNView中。添加布尔变量,以检查是否检测到曲面。
var surfaceDetected = false
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
sceneView.delegate = self
let configuration = ARWorldTrackingConfiguration()
configuration.planeDetection = .horizontal
sceneView.session.run(configuration)
}不要忘记继承ARSCNViewDelegate协议并实现下一个方法。
func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
guard !surfaceDetected else { return }
surfaceDetected = true
guard let planeAnchor = anchor as? ARPlaneAnchor else { return }
let x = CGFloat(planeAnchor.transform.columns.3.x)
let y = CGFloat(planeAnchor.transform.columns.3.y)
let z = CGFloat(planeAnchor.transform.columns.3.z)
let position = SCNVector3(x,y,z)
sceneView.scene.rootNode.addChildNode(yourNode)
yourNode.position = position
}希望能帮上忙!
https://stackoverflow.com/questions/53933842
复制相似问题