Swift SCNNode 子类 hittest 总是返回 SCNNode *not* 子类

标签 swift scenekit

我有一个 SCNNode 的子类“ExSCNNode”,用于向 SCNNode 添加更多属性和行为。

class ExSCNNode : SCNNode {
...
}

我用 ExSCNNode 构建了一个场景。

let testnode = ExSCNNode()

当 HitTest 场景时:

// check what nodes are tapped
let p = gestureRecognize.location(in: scnView)
let hitResults = scnView.hitTest(p, options: [:])

// check that we clicked on at least one object
if hitResults.count > 0 {

for hit in hitResults {
let hitnode = hit.node
...

hitnode 是一个 SCNNode 而不是 ExSCNNode。 但我想让 ExSCNNode 访问高级功能。

如何访问子类而不是 SCNNode 类?

最佳答案

只需将对象转换为您的子类:

// check what nodes are tapped
let p = gestureRecognize.location(in: scnView)
let hitResults = scnView.hitTest(p, options: [:])

for hit in hitResults {
    if let hitnode = hit.node as? ExSCNNode {

        …
    }

关于Swift SCNNode 子类 hittest 总是返回 SCNNode *not* 子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43792213/

相关文章:

ios - SceneKit 中支持 Collada/DAE 模型有哪些要求?

具有多种记录类型的 Swift CKQuery

swift - 单例模式 init 调用一次

swift - 复制 SCNParticleSystem 似乎效果不佳

swift - ARKit - 在 Swift 3 中的平面上的 2 个矢量点之间放置一个 SCNPlane

ios - 为 ARKit 请求 3D 模型的指南

ios - 如何录制 ARKit 场景但排除 UI 元素?

ios - 如何在 swift 应用程序中获取 keyWindow 引用?

ios - 如何在当前 Collection View 中显示 xib

xcode - 在 Swift 中从数组填充 NSTableView(没有 XCode)