我有3D模型,并想在此模型上单击特定节点来创建一些操作。我的模型是一组节点;每个节点都没有冷却节点,我想单击其中一个节点来解释某些操作,并单击另一个节点来解释不同的操作;如何检测在我的模型上单击了哪个节点?
发布于 2019-01-24 16:52:25
可以使用SCNSceneRenderer中的hitTest(_:options:)来检测从二维点接触的三维对象。
它将返回一个包含node属性SCNHitTestResult数组。
发布于 2019-01-24 17:11:51
你应该阅读一些关于SceneKit命中测试方法和遵循hit-test method的信息。
func registerGestureRecognizer() {
let tap = UITapGestureRecognizer(target: self, action: #selector(detectNode))
self.sceneView.addGestureRecognizer(tap)
}
@objc func detectNode(_ sender: UITapGestureRecognizer) {
let sceneView = sender.view as! ARSCNView
let location = sender.location(in: sceneView)
let results = sceneView.hitTest(location, options: [SCNHitTestOption.searchMode : 1])
for result in results.filter( { $0.node.name != nil }) {
if result.node.name == "Your node name" {
// excuse some actions
}
}
}希望它能帮上忙!
https://stackoverflow.com/questions/54341647
复制相似问题