SK3DNode的hitTest方法无法定位目标SCNNode问题求助
SK3DNode点击检测无命中的解决办法
开启节点交互权限
SCNNode默认关闭用户交互,会直接跳过点击检测。必须将目标盒子节点及其父节点的isUserInteractionEnabled设为true:boxNode.isUserInteractionEnabled = true playgroundNode.isUserInteractionEnabled = true匹配SK3DNode视口尺寸
确保SK3DNode的viewportSize与你创建时的100x200尺寸完全一致,否则会导致触摸坐标到3D场景的映射出错:sk3DNode.viewportSize = CGSize(width: 100, height: 200)使用正确的hitTest参数
调用hitTest时,要传入相对于SKScene的触摸坐标,同时避免错误的过滤选项。比如指定正确的类别掩码,不忽略隐藏节点:let touchPos = // 获取触摸在SKScene中的坐标 let hitResults = sk3DNode.hitTest(touchPos, options: [ SCNHitTestOption.categoryBitMask: boxNode.categoryBitMask, SCNHitTestOption.ignoreHiddenNodes: false ])排查遮挡与层级问题
如果playground节点是实心几何体,可能会优先被命中或者遮挡盒子的检测。可以暂时隐藏playground节点测试,或者调整节点的categoryBitMask来精准过滤目标节点。
内容的提问来源于stack exchange,提问作者OMGPOP
相关产品推荐
相关产品推荐

