iOS 14.0からhitTest(_:types:)
は非推奨になっており、Xcodeから注意された時の対処法
動作環境 | バージョン |
---|---|
Xcode | 12.1 |
iOS | 14.1 |
Swift | 5 |
iOS 14.0でhitTest(_:types:)
を使用すると、このように注意されます。
・日本語訳
'hitTest(_:types:)' は iOS 14.0では非推奨です。
ARSCVView.raycastQuery(from point: CGPoint, allowing target: ARRaycastQuery.Target, alignment: ARRaycastQuery.TargetAlignment)
こちらを使ってね。
ということです。
hitTest(_:types:)の代わりにraycastQueryを使用
touchesBegan
でtouchした座標を取得するコードを例として挙げさせていただきました。
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
// タッチした最初の座標を取り出す
guard let touch = touches.first else { return }
// タッチで取得した座標をスクリーン座標系に変換
let touchPosition = touch.location(in: sceneView)
//これより下がhitTest(_:types:)の代わりのコード
guard let query = sceneView.raycastQuery(from: touchPosition, allowing: .existingPlaneGeometry, alignment: .any) else { return }
let results = sceneView.session.raycast(query)
guard let hitTestResult = results.first else {
print("no surface found")
return
}
let anchor = ARAnchor(transform: hitTestResult.worldTransform)
sceneView.session.add(anchor: anchor)
}
これで意図した動作が出来ました。 間違いやより良い方法がありましたら、優しく指摘していただけると幸いです。