2016-09-28 4 views
0

У меня есть два SCNNodes, которые имеют тип геометрии, установленный в SCNBox.Расположение SceneKit узла

let node1 = SCNNode(geometry: SCNBox(width: 10.0, height: 10.0, length: 10.0, chamferRadius: 0.0)) 
let node2 = SCNNode(geometry: SCNBox(width: 20.0, height: 10.0, length: 10.0, chamferRadius: 0.0)) 

node1.position.x = 0.0 
node2.position.x = 10.0 

scene.rootNode.addChildNode(node1) 
scene.rootNode.addChildNode(node2) 

Когда я смотрю на свою сцену, узлы перекрываются, однако они не должны или должны? Одновременно я не манипулирую камерой. На данный момент у меня нет набора физических полей.

Когда я печатаю следующее:

node1.presentationNode.position.x 
node2.presentationNode.position.x 

или

(node1.geometry as! SCNBox).width 
(node2.geometry as! SCNBox).width 

Тогда значения, которые печатаются как же, как и те, которые были первоначально установлены. Является ли опорная точка узла по умолчанию левым нижним углом? Странно то, что когда я перемещаю узел в touchhesBegan/touchesEnded и позиционирую его в том же положении, то узлы не перекрываются. Как правильно разместить узлы SceneKit?

+0

Какое событие произошло, когда вы видите разницу в разделении? Это происходит, когда вы манипулируете камерой? – bpedit

+0

Пожалуйста, взгляните на мои правки. В примере кода выше узлы всегда перекрываются. Однако, когда я перемещаю узел в touchhesBegan и размещаю его в точно такой же позиции, они не перекрываются. – BlueLettuce16

ответ

0

Благодарим за помощь. Я нашел решение. Узлы расположены на основе точки привязки, которая находится в середине ширины узла.

+1

Пожалуйста, отметьте свой ответ как «Принято», чтобы вопрос отображался как закрытый/ответил. –

0

Я считаю, что вы смешаете свою ось. Ширина узла2 равна 20, но вы перемещаете только узел1 (ширина 10) на 10. Попробуйте переместить его на 20 (или 23 для небольшого зазора).

+0

Я перемещаю узел2 на 10 и ширину узла1 = 10. – BlueLettuce16

+0

поставьте снимок экрана сцены ура –

 Смежные вопросы

  • Нет связанных вопросов^_^