Ограничение позволяет свойству SCNViewCameraControl просто сжимать / масштабировать жест - PullRequest
0 голосов
/ 01 мая 2018

У меня есть сцена, где после некоторого события я хочу, чтобы пользователь мог взаимодействовать с камерой, но только для pinch/zoom gesture. Я хотел бы включить свойство allowsCameraControl SCNView для этой цели.

Когда вы включаете allowsCameraControl, включаются все жесты, некоторые из которых не очень интуитивны в использовании и не просты в управлении. Мне также нужно иметь доступный жест для чего-то другого, чем управление камерой.

Есть ли способ ограничить управление камерой только pinch/zoom gesture? В документации я обнаружил класс SCNCameraController, но его описание крайне скудно и не понял, как его использовать.

1 Ответ

0 голосов
/ 31 мая 2018

allowCameraControl - это круто для общих вещей, но согласованные, редкие документы. Вероятно, лучше всего реализовать собственное управление камерой. Это не так уж и плохо - добавьте узлы cameraEye и cameraFocus, а затем установите с помощью SCNLookAtConstraint. Примерно так:

func setView()
{
 cameraEye.constraints = []
 cameraEye.position = SCNVector3(x: 0, y: 10, z: 12)
 cameraFocus.position = SCNVector3Make(0, 0, 0)
 let vConstraint = SCNLookAtConstraint(target: cameraFocus)
 vConstraint.isGimbalLockEnabled = true
 cameraEye.constraints = [vConstraint]
}

Оттуда - увеличение / уменьшение - это просто изменение положения cameraFocus.su, в зависимости от того, насколько сложным он вам нужен. Надеюсь, это поможет!

...