ARKit - добавление узла к сцене в текущем виде с камеры
У меня есть базовое приложение ARKit, которое вызывает функцию для визуализации SNCSphere только из вида камеры до ее запуска, и оно остается в этой текущей позиции до тех пор, пока не будет нажат экран, где применяется импульс в направлении -Z, который затем вызывает функция, чтобы добавить другую сферу. Однако, когда он снимается, он делает это в направлении исходной ориентации исходного изображения с камеры, даже если он добавляется к точке обзора сцены.
Это потому, что импульс, добавляемый к скорости, фактически добавляет этот импульс к исходной ориентации устройства -Z? или мне нужно обновить камеру pointofview, чтобы каждый раз, когда добавлялся узел сферы, он добавлялся к этой новой камере на основе текущей точки обзора? Это создаст проблему, когда каждый раз, когда устройство меняет свою точку зрения, камеру необходимо будет обновлять.
Просто немного озадачен здесь, это моя первая попытка приложения ARKit, и я, кажется, могу прибить это.
//add new sphere
func addSphere() {
//create sphere and apply parameters
loadSphereNode = SCNNode(geometry: SCNSphere)
loadSphereNode!.name = "sphere"
loadSphereNode!.scale = SCNVector3(1, 1, 1)
loadSphereNode!.position = SCNVector3(0, 0, 0.5)
//generate physics for sphere but don't apply them
spherePhysicsBody = SCNPhysicsBody(
type: .dynamic,
shape: SCNPhysicsShape(geometry: (loadDartNode!.geometry)!)
)
spherePhysicsBody!.mass = 0.003
spherePhysicsBody!.friction = 2
spherePhysicsBody!.contactTestBitMask = 1
//add loaded sphere to a temporary variable
currentSphereNode = loadSphereNode
//add sphere to point of view
sceneView.pointOfView?.addChildNode(currentSphereNode!)
}
//button action
@IBAction func moveSphere(_ sender: Any) {
//add physics to sphere
currentSphereNode?.physicsBody = SpherePhysicsBody
//apply impulse
currentSphereNode?.physicsBody?.applyForce(SCNVector3(x: 0, y: 0, z: -1.25), asImpulse: true)
//call to add new sphere
addSphere()
}