动画人物的命中测试–获取正确的worldCoordinates

时间:2019-02-24 09:19:17

标签: swift scenekit augmented-reality arkit hittest

在我的ARKit应用程序中,我有一个动画角色(作为T骨模型存储在SCN文件中)。动画来自几个DAE文件,并使用SCNAnimationPlayer应用于模型,如下所示:

let myAnimation = Animations.configMyAnimationFunction()
myAnimation.stop()
enemyNode.childNodes[2].addAnimationPlayer(myAnimation, forKey: "myKey")
enemyNode.childNodes[2].animationPlayer(forKey: "myKey")?.play()

动画播放完美。

现在,我对动画的几何图形进行“命中测试”:

let currentTouchPoint = touches.first?.location(in: self.sceneView)
let hitTest = sceneView.hitTest(currentTouchPoint!, options: [SCNHitTestOption.categoryBitMask: NodeCategory.catEnemy.rawValue, SCNHitTestOption.searchMode: SCNHitTestSearchMode.any.rawValue as NSNumber])
let hitObject = hitTest.first?.node // let that stores the hitTest

if hitObject != nil {

      // code...

      let hitLocation = hitTest.first?.worldCoordinates

      // code...
}

我想使用“ worldCoordinates”的结果。但是似乎结果总是包含静态T骨模型的坐标,而不是动画运行时的位置。

想象一下动画模型正在拍手(作为人形角色)或触地。当我触摸模型手时,Hittest会工作并返回结果,但最终会在错误的坐标处进行。

worldCoordinates上的Apple Docs像这样:“场景的世界坐标系中几何图形和搜索射线之间的交点。” 我还尝试了{{1} },但成功率更低。

如何在动画制作模型期间确定几何体上当前触摸位置的真实坐标?

0 个答案:

没有答案