Я новичок в Swift, я программирую приложение AR с помощью RealityKit для интерфейса приложения и обернутой структуры SwiftUI внутри одного из этих контроллеров представления, поэтому я могу создать собственный интерфейс AR. (Я не знаю, правильный ли это способ сделать это, но, как я уже говорил, я учился сам и сумел это сделать до сих пор).
В любом случае, цель состоит в том, чтобы разместить объекты AR в соответствии с широтой и долготой, заданными пользователем (еще не сделал эту часть, но я тестирую с ручными значениями), хороший подход для достижения этого будет использовать ARGeoTrackingConfiguration()
( из того, что я читал), но поскольку на моем устройстве (iPhone 7) нет чипа A12 Bionic, я не могу его использовать, поэтому я пытаюсь реализовать его с помощью ARWorldTrackingConfiguration()
, но пока что я застрял в проблема с «переводом» недоступна из-за «внутреннего» уровня защиты при попытке получить местоположение касания на экране с помощью self.raycast (...). first? .worldTransform.translation
extension ARView {
@objc func handleTap(_ sender: UITapGestureRecognizer? = nil) {
guard let touchInView = sender?.location(in: self) else {
print("Failed on touch")
return
}
let results = self.raycast(from: touchInView,
allowing: .estimatedPlane,
alignment: .horizontal)
print(results)
if let firstResult = results.first {
let anchor = ARGeoAnchor(name: "pinus_pinaster.usdz",
coordinate: firstResult.worldTransform.translation)
self.session.add(anchor: anchor)
} else {
print("Object placement failed - coudn't find surface")
}
}
}
Какие-нибудь объяснения того, как решить эту проблему (пример было бы неплохо)?
Кроме того, какие-либо общие советы по разработке ARKit, можно ли реализовать приложение с этими функциями без ARGeoTrackingConfiguration ()?