我当前正在使用SceneKit的默认相机,并且我想继续使用单击和单次滑动手势,但是我想防止默认的两指缩放,平移和旋转。
是否有一种方法可以捕获在一个视图上执行的所有2个触摸手势(我想是SceneView的父视图)并取消它们,而不禁用1个触摸手势?
scnView.defaultCameraController的文档不足,并且看起来您可以控制滚动等,但不能阻止它发生。
private func createCamera() {
scnView.allowsCameraControl = true
cameraNode = SCNNode()
cameraNode.camera = SCNCamera()
if #available(iOS 11.0, *) {
scnView.defaultCameraController.maximumVerticalAngle = 30
scnView.defaultCameraController.minimumVerticalAngle = -30
}
cameraNode.position = SCNVector3(x: 0, y: 0, z: 5)
myScene.rootNode.addChildNode(cameraNode)
}
此外-一旦您构建了自己的相机-您就可以测试触摸次数-并非包括所有代码,而是类似:
func dragBegins(vRecognizer: UIPanGestureRecognizer)
{
if(data.gameState == .run)
{
if(vRecognizer.numberOfTouches == 2) { dragMode = .strafe }
}
}
您可以使用诸如.began,.changed,.end之类的识别器状态来检查流程并对其进行控制。