【ARKit】'hitTest(_:types:)' was deprecated in iOS 14.0 対処法
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)
}
これで意図した動作が出来ました。
間違いやより良い方法がありましたら、優しく指摘していただけると幸いです。
参考
Author And Source
この問題について(【ARKit】'hitTest(_:types:)' was deprecated in iOS 14.0 対処法), 我々は、より多くの情報をここで見つけました https://qiita.com/littleossa/items/a022fda30312e4aa2066著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .