基本上这个问题是针对 SceneKit 的。
我有一个父节点,里面有一些较小的节点,稍后父节点变得透明(父节点的漫反射材质不透明度设置为 0),之后我想获取在对象内部点击的节点,如何我应该这样做吗?默认命中测试返回父节点,并且由于对象内部有一些较小的节点,因此我需要被点击的精确节点。
要解决此问题,我建议阅读 Apple 的下一个主题:
https://developer.apple.com/documentation/scenekit/scnhittestoption
大概的概念:
func registerGestureRecognizer() {
let tap = UITapGestureRecognizer(target: self, action: #selector(search))
self.sceneView.addGestureRecognizer(tap)
}
@objc func search(sender: UITapGestureRecognizer) {
let sceneView = sender.view as! ARSCNView
let location = sender.location(in: sceneView)
let results = sceneView.hitTest(location, options: [SCNHitTestOption.searchMode : 1])
guard sender.state == .ended else { return }
for result in results.filter( { $0.node.name == "Your node name" }) {
// do manipulations
}
}
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你!此致。
| 归档时间: |
|
| 查看次数: |
1542 次 |
| 最近记录: |