七天帶你初探AR世界-Day 4


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()
    ...
}
#ARKit #3Dmodel #Day4







你可能感興趣的文章

Mysql 狀況紀錄 8/11

Mysql 狀況紀錄 8/11

[BE101]  留言板(上-基礎實作篇)

[BE101] 留言板(上-基礎實作篇)

[Day 0] 第一屆開發者寫作松

[Day 0] 第一屆開發者寫作松






留言討論