我有一个基本的ARKit应用程序,该应用程序调用一个函数以将SNCSphere刚从摄影机视图中渲染出来,直到启动为止,并且一直停留在当前位置,直到在屏幕上点击沿-Z方向施加脉冲的位置为止。然后调用该函数以添加另一个球体。但是,当它起飞时,即使它已添加到场景视图的视点,它也会朝初始摄像机视图的原始方向移动。
这是因为添加到速度上的脉冲实际上是在原始设备-Z方向上添加了该脉冲?还是我需要更新视点相机,以便每次根据当前视点将球体节点添加到此新相机时,将其添加到此新相机?这就产生了一个问题,即每次设备更改其视点时,都需要更新摄像机。
这有点难过,这是我第一次尝试使用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()
}