В моем приложении ARKit у меня есть анимированный персонаж (хранится в виде модели T-Bone в файле 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-Bone, а не место, в котором он находится во время анимации.
Представьте, что анимированная модель хлопает в ладоши (как гуманоид)характер) или касаясь земли.Когда я касаюсь рук Модели, тестирование срабатывает и возвращает результат, но, в конечном итоге, с неправильными координатами.
Apple Docs на worldCoordinates
выглядит так: "Точка пересечения геометрии илуч поиска, в мировой системе координат сцены. " Я также пытался localCoordinates
, но с еще меньшим успехом.
Как определить реальные координаты в текущем месте касания нагеометрия во время модели анимирована?