Day 4
在昨天已經建立也加入好3D模組了,那麼接下來就是加入手勢啦。
這次專案會帶大家學習到三種手勢分別為:
- UIPanGestureRecognizer
- UIPinchGestureRecognizer
- UILongPressGestureRecognizer
那麼今天帶大家來認識UIPanGestureRecognizer,此手勢為水平拖曳手勢,那麼我利用水平拖移的特性左右移動,使模組呈現360度的旋轉如下:
@objc func didRotate(_ pan: UIPanGestureRecognizer){
guard let _ = object else { return }
let translation = pan.translation(in: pan.view)
var newAngleY = (Float)(translation.x)*(Float)(Double.pi)/180.0
newAngleY += currentAngleY
object?.eulerAngles.y = newAngleY
if pan.state == .ended{
currentAngleY = newAngleY
}
}
- 首先,先確認 object 是否有值,沒有則 return。
- 抓取手指在螢幕上所移動的距離。
- currentAngleY 先宣告為 Float = 0.0,並加上原先算出的 newAngleY。
- 並將算好的 newAngleY,指派回 object物件上。
- 最後動作結束也將 currentAngleY 等於算好的 newAngleY,以便下次旋轉能延續下去原先角度。
並加入 addGesture() 裡:
func addGesture() {
let rotate = UIPanGestureRecognizer(target: self, action: #selector(didRotate(_:)))
sceneView.addGestureRecognizer(rotate)
}
及 viewDidLoad() :
override func viewDidLoad() {
addGesture()
super.viewDidLoad()
...
}