Day 7
今天要帶大家如何呈現不同的3D模組,基本上AR的部分已經都結束囉~那做法其實都一樣,只需結合 switch 及判斷式即可,那麼接下就開始吧!
首先,我們已經從第二天中知道如何加入模組,是從檔案名稱去決定要植入哪個模組,那麼我們何不做個 switch ,去判斷案的是哪個按鈕,並給予正確的檔名。如下:
func addModel(x: Float = 0, y: Float = -0.3, z: Float = -0.5, file: String) {
guard let modelScene = SCNScene(named: "art.scnassets/models/\(file).obj") else { return }
...
}
這邊我在 addModel 中多加了 file: String
以便之後呼叫時好帶入字串,並在植入模組的檔案位置上改為 \(file).obj
。
那在按鈕的部分,因為做的事都大同小異,所以我選擇用 switch 去判斷按鈕的名字,然後個別呼叫同個 func addModel()
並帶入不同的字串,如下:
@IBAction func selectRoleButtonPressed(_ sender: UIButton) {
switch sender {
case addCatBt:
addModel(file: "cat")
case addDeerBt:
addModel(file: "deer")
case addWolfBt:
addModel(file: "wolf")
default:
break
}
}
當然,按鈕都要先拉好並命名完,如此一來只要你點擊到所想要的按鈕,便會帶入想要的檔名給 func addModel()
,並呼叫出對應的模組!
最後是教大家怎麼清除節點上的模組,只需一個步驟,如下:
@IBAction func clearAction(_ sender: Any) {
object!.enumerateChildNodes { (node, stop) in
node.removeFromParentNode()
}
}
大功告成!!!!如此一來你就能隨意新增、刪除、拖曳、縮放、旋轉模組囉~~
加入貓貓:
加入小鹿:
加入大野狼: