質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
ARKit

ARKitは、iPhone/iPad向けのARアプリ用フレームワーク。iOS11以降に標準搭載されています。これを用いたARアプリは、特殊なデバイスがなくてもiPhone/iPadの単眼カメラを使用して動作することが可能です。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

0回答

1449閲覧

オブジェクトが押された時画面遷移したい Swift RealityKit UITapGesture

hrk_sgymm1193

総合スコア1

ARKit

ARKitは、iPhone/iPad向けのARアプリ用フレームワーク。iOS11以降に標準搭載されています。これを用いたARアプリは、特殊なデバイスがなくてもiPhone/iPadの単眼カメラを使用して動作することが可能です。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2021/12/20 04:09

swift初心者です。UIKitのコードベースでARのアプリ開発を行なっています。

https://qiita.com/john-rocky/items/77dd077a5778c7ca9369#17realitykit%E3%82%92%E3%81%A4%E3%81%8B%E3%81%86%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88

こちらの記事を参考にオブジェクトがタップされた際に画面遷移を行いたいのですが、オブジェクトのタップ自体が検出されず実装できていません。RealityKItにお詳しい方ご指導の方よろしくお願いいたします。

ARViewContoroller

1import UIKit 2import ARKit 3import RealityKit 4import Combine 5 6class ARViewController: UIViewController, ARCoachingOverlayViewDelegate { 7 8 let userView_Button = UIButton() 9 private var arView: ARView! 10 private let coachingOverlay = ARCoachingOverlayView() 11 private var animationEnd: Cancellable! 12 private var go = true 13 private var pin:Entity! 14 private var moveFoward = false 15 16 override func viewDidLoad() { 17 super.viewDidLoad() 18 arView = ARView(frame: view.bounds) 19 view.addSubview(arView) 20 UISetup() 21 view.backgroundColor = .darkGray 22 navigationItem.title = "AR" 23 24 let tap = UITapGestureRecognizer(target: self, action:#selector(onTap(_:)) ) 25 arView.addGestureRecognizer(tap) 26 } 27 28 @objc func onTap(_ sender: UITapGestureRecognizer? = nil) { 29 guard let touchInView = sender?.location(in: self.arView) else { 30 return 31 } 32 guard self.arView.entity( 33 at: touchInView) != nil else { 34 return 35 } 36 print("pbject tapped") 37 let PIVC = PostInfoViewController() 38 self.present(PIVC, animated: true) 39 } 40 41 @objc func UserViewPressed(_ sender: UIButton) { 42 print("pushed!!!!!") 43 let MenuVC = MenuViewController() 44 let MenuNVC = UINavigationController(rootViewController: MenuVC) 45 if #available(iOS 15.0, *) { 46 if let sheet = MenuNVC.sheetPresentationController { 47 sheet.detents = [.medium(), .large()] 48 sheet.prefersGrabberVisible = true 49 sheet.preferredCornerRadius = 23 50 sheet.largestUndimmedDetentIdentifier = .medium 51 sheet.prefersScrollingExpandsWhenScrolledToEdge = false 52 } 53 } else { 54 // Fallback on earlier versions 55 } 56 self.present(MenuNVC, animated: true) 57 } 58 override func viewWillAppear(_ animated: Bool) { 59 super.viewWillAppear(animated) 60 let config = ARWorldTrackingConfiguration() 61 config.planeDetection = [.horizontal] 62 config.environmentTexturing = .automatic 63 arView.environment.sceneUnderstanding.options = [.occlusion] 64 arView.session.run(config, options: []) 65 coachingOverlay.goal = .horizontalPlane 66 coachingOverlay.activatesAutomatically = false 67 coachingOverlay.session = arView.session 68 coachingOverlay.delegate = self 69 coachingOverlay.frame = arView.bounds 70 arView.addSubview(coachingOverlay) 71 placepins() 72 } 73 74 override func viewWillDisappear(_ animated: Bool) { 75 animationEnd.cancel() 76 super.viewWillDisappear(animated) 77 arView.session.pause() 78 } 79 80 override func viewDidDisappear(_ animated: Bool) { 81 super.viewDidDisappear(animated) 82 83 } 84 85 private func placepins() { 86 guard let pin = try? Entity.load(named: "teapot") else { return } 87 self.pin = pin 88 let anchor = AnchorEntity() 89 anchor.addChild(pin) 90 91 arView.scene.addAnchor(anchor) 92 93 pin.position = [0,0,-60] 94 pin.setScale([100,100,100], relativeTo: pin) 95 96 } 97 98 99}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問