我可以使用下面的代码在iOS中自动创建3D立方体。用两个手势在iOS中构建3D立方体
问题是:如何用两个手势构建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