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

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

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

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

1 ответ

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.s, в зависимости от того, насколько сложным вы хотите. Надеюсь, это поможет!

Другие вопросы по тегам