You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 20:14:53