Я могу автоматически создать 3D-куб в iOS, используя приведенный ниже код.Создание 3D-куба в iOS с помощью двух жестов
Вопрос в следующем: как построить 3D-куб с двумя жесты?
С жест щепотки Я хотел бы построить основание куба в оси XZ.
Затем с жест перетаскивания Я хотел бы построить высоту куба по оси Y.
Как это сделать?
import UIKit
import SceneKit
class GameViewController: UIViewController {
var scnView: SCNView!
var scnScene: SCNScene!
var cameraNode: SCNNode!
override func viewDidLoad() {
super.viewDidLoad()
setupView()
setupScene()
setupCamera()
spawnShape()
}
override func shouldAutorotate() -> Bool {
return true
}
override func prefersStatusBarHidden() -> Bool {
return true
}
func setupView() {
scnView = self.view as! SCNView
scnView.allowsCameraControl = true
scnView.autoenablesDefaultLighting = true
}
func setupScene() {
scnScene = SCNScene()
scnView.scene = scnScene
scnScene.background.contents = "BG.scnassets/BgTexture.png"
}
func setupCamera() {
cameraNode = SCNNode()
cameraNode.camera = SCNCamera()
cameraNode.position = SCNVector3(x: 0, y: 0, z: 12)
scnScene.rootNode.addChildNode(cameraNode)
}
func spawnShape() {
var geometry: SCNGeometry
switch ShapeType.random() {
case .Box:
geometry = SCNBox(width: 1.0, height: 1.0, length: 1.0, chamferRadius: 0.1)
}
let geometryNode = SCNNode(geometry: geometry)
scnScene.rootNode.addChildNode(geometryNode)
}
}
Я пытался реализовать UIPinchGestureRecognizer()
и UIPanGestureRecognizer()
подклассы, но мне не удалось. Я не знаю, как это сделать.
var pinchGesture = UIPinchGestureRecognizer()
var dragGesture = UIPanGestureRecognizer()
override func viewDidLoad() {
super.viewDidLoad()
setupView()
setupScene()
setupCamera()
spawnShape()
self.scnView.userInteractionEnabled = true
self.scnView.multipleTouchEnabled = true
self.pinchGesture = UIPinchGestureRecognizer(target: self, action: #selector(pinchRecognized(_:)))
self.dragGesture = UIPanGestureRecognizer(target: self, action: #selector(panRecognized(_:)))
self.scnView.addGestureRecognizer(self.pinchGesture)
self.scnView.addGestureRecognizer(self.dragGesture)
}
@IBAction func pinchRecognized(pinch: UIPinchGestureRecognizer) {
........
}
@IBAction func panRecognized(pan: UIPanGestureRecognizer) {
........
}
Вы еще что-нибудь пробовали? Это похоже на очень нетривиальную задачу, если вы попытаетесь реализовать ее самостоятельно. – luk2302
Итак, отправьте код, который вы попробовали, и объясните, как он не работает. –
Разве вы не можете использовать масштаб вашей ширины и длины для шкалы pinchgesture и сбросить значение pinchgesturescale до 1.0 каждый раз, когда он вызывается? Это позволит увеличить прирост. – Emptyless