ARKitでタップした座標を検出する方法
ARSCNView
ARを使う大前提のビュー。これがないと始まらないです。
storyboard上で紐付けを行ってください
class ViewController: UIViewController, ARSCNViewDelegate {
@IBOutlet var sceneView: ARSCNView!
UITapGestureRecognizer
現実世界の座標には、SCNVector3を用いて取得を行います。
UITapGestureRecognizerでタップ判定を登録し、タップしたポイントを取得します。
@IBAction func tappedSceneView(_ sender: UITapGestureRecognizer) {
// sceneView上でタップした座標を検出
let tapPoint = sender.location(in: sceneView)
let results = sceneView.hitTest(tapPoint, types: .existingPlaneUsingExtent)
let hitPoint = results.first
// 現実世界の座標に変換
let point = SCNVector3.init(hitPoint.worldTransform.columns.3.x,
hitPoint.worldTransform.columns.3.y,
hitPoint.worldTransform.columns.3.z)
認識した平面に対して座標を検出できるようになります。
※3次元なので、奥行きがz軸になりますので注意してください。