Набор сцен: как сделать так, чтобы SCNNode вращался только по горизонтали в Swift 2.0

Мне удалось создать дерево, и программа должна позволять пользователям вращать это дерево только по горизонтали.

После просмотра документа я использую следующий код

treeNode.physicsBody?.angularVelocityFactor = SCNVector3Make(0, 0, 1.0)

Но это ничего не дало, я все еще мог вращать дерево во всех направлениях.

Как правильно ограничить вращение узла только по горизонтали?


person donkey    schedule 07.12.2015    source источник
comment
Это не ограничивает вращение узла, только способность физического движка применять вращение. Как меняется поворот дерева? Можете ли вы добавить ограничение на этом этапе?   -  person Graham Perks    schedule 08.12.2015


Ответы (1)


Вы действительно пытаетесь ограничить вращение узла? Или вы хотите ограничить поворот камеры?

В первом случае вам нужно будет предоставить гораздо больше подробностей о физике и структуре вашего тела. Подход, использующий SCNPhysicsHingeJoint, кажется, сработает.

let joint = SCNPhysicsHingeJoint.init(body: treeNode, 
                                      axis: SCNVector3Make(0, 0, 1.0), 
                                      anchor: SCNVector3Make(xpos, ypos, zpos))

Однако если вы просто пытаетесь управлять камерой, вам следует выключить allowsCameraControl для SCNView. Это полезно только для быстрого и грязного тестирования. Затем вы можете реализовать описанную здесь технику (Поверните узел SCNCamera, глядя на объект вокруг воображаемой сферы) и измените здесь (SCNCamera ограничивает вращение шара).

person Hal Mueller    schedule 07.12.2015
comment
Извините, меня не смутило вращение узла и движение камеры узла. Я хочу, чтобы конкретный узел вращался только в горизонтальном направлении. Могу ли я добиться этого с помощью камеры? - person donkey; 08.12.2015
comment
Нет. Но SCNPhysicsHingeJoint может быть тем, что тебе нужно. Из того, что вы написали в своем вопросе, я не могу точно понять, что вы пытаетесь сделать. - person Hal Mueller; 08.12.2015