#ios #swift #scenekit
#iOS #swift #scenekit
Вопрос:
У меня есть следующий код, чтобы включить отображение 3D цилиндра в представлении. При просмотре на устройстве жесты поворачивают цилиндр как по оси x (проведите пальцем вверх и вниз), так и по оси y (проведите пальцем влево и вправо), но ось z заблокирована. Я полагаю, что это значение по умолчанию для allowsCameraControl.
Что я хотел бы сделать, так это заблокировать ось x (я думаю), чтобы работали только жесты прокрутки влево и вправо. Я не должен быть в состоянии видеть верхнюю или нижнюю часть цилиндра. Я хотел бы сохранить вращение по умолчанию при пролистывании влево и вправо (т. Е. Оно естественным образом замедляется после пролистывания).
С благодарностью принимаю любую помощь!
class MyCollectionViewController: UIViewController {
@IBOutlet weak var scnView: SCNView!
var scnScene: SCNScene!
override func viewDidLoad() {
super.viewDidLoad()
sceneSetup()
}
// MARK: Scene
func sceneSetup() {
scnScene = SCNScene()
let cylinder = SCNNode(geometry: SCNCylinder(radius: 5.0, height: 20))
cylinder.geometry?.firstMaterial?.diffuse.contents = UIImage(named: "image1")
cylinder.geometry?.firstMaterial?.specular.contents = UIColor.white
scnView.allowsCameraControl = true
scnScene.rootNode.addChildNode(cylinder)
scnView.autoenablesDefaultLighting = true
scnView.scene = scnScene
}
}
Ответ №1:
Добавление следующего в ваш код может заблокировать вертикальный
scnView.defaultCameraController.maximumVerticalAngle = 0.001
Комментарии:
1. Мне нравится однострочное решение! Спасибо!