Как поднять SCNNode над другим? - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь заставить SCNNode летать над самолетом, а затем уронить его.

Чтобы сделать это плавающим:

floatingNode.position.z += 0.4 // It's rotated π/2 over x axis
planeNode.addChildNode(floatingNode)
sceneView.scene.rootNode.addChildNode(planeNode)

Я знаю, что это на самом деле не плавает, я просто изменяю свою позицию.

Чтобы сделать это:

floatingNode.physicsBody.angularVelocityFactor = SCNVector3(0, 0, 0)
floatingNode.physicsBody.angularVelocityFactor.physicsBody.restitution = 0
floatingNode.physicsBody = SCNPhysicsBody.init(type: .dynamic, shape: SCNPhysicsShape.init(node: modelNode, options: nil))

Но он не опускается до самого дна, между плавающим узлом и плоскостью есть пробел. Чтобы это исправить, после падения мне нужно сделать:

floatingNode.physicsBody = nil
floatingNode.position.z -= 0.4

Мне нужно установить для PhysicsBody значение nil, потому что я хочу, чтобы оно снова всплыло.

Есть ли способ заставить плавающий узел SCNNode плавать поверх другого, не меняя его положение вручную?

...