前にドラゴンを召喚する設定方法を投稿しました
everydayisagoodday.hatenadiary.com
これは指定した画像をカメラにとらえる事をトリガーにしてARを表示する方法でした
今回はスマホのタップした位置にARを表示する方法です
ドラゴン召喚と同じくUnityは2023.1.18f1 ARFoundationは5.1.1 デバイスはGooglePixel6aです
やり方も12.のXR/AR Session XR/XR Origin(Mobile AR)を追加するところまでは同じなので前の記事をご参照ください
13.から始めます
13.ヒエラルキーの+をクリックしてXR/AR Default Planeを追加
14.AR Default Planeをプレファブ化しヒエラルキーのAR Default Planeは右クリックして削除
15.XR Originのコンポーネントを追加をクリック
16.AR Plane Managerを追加 さらにコンポーネントを追加をクリック
17.AR Raycast Managerを追加
18.AR Plane ManagerのDetection Modeの▼をクリックしHorizontalを選択
19.プロジェクトタブ内を右クリック
作成/C#スクリプトを選択してPlaceOnPlaneというスクリプトを作成
20.PlaceOnPlaneを編集
using System.Collections.Generic; using UnityEngine; using UnityEngine.XR.ARFoundation; using UnityEngine.XR.ARSubsystems; [RequireComponent(typeof(ARRaycastManager))] public class PlaceOnPlane : MonoBehaviour { // AR表示させるオブジェクト [SerializeField] private GameObject koDackPrefab; private ARRaycastManager raycastManager; private List<ARRaycastHit> hits = new List<ARRaycastHit>(); private ARPlaneManager planeManager; private bool onTach = false; void Awake() { raycastManager = GetComponent<ARRaycastManager>(); planeManager = GetComponent<ARPlaneManager>(); } void Update() { if (raycastManager.Raycast(Input.GetTouch(0).position, hits) && !onTach) { // タップされた場所にオブジェクトを生成 Instantiate(koDackPrefab, hits[0].pose.position, Quaternion.identity); //ARPlaneを非表示 foreach (var plane in planeManager.trackables) { plane.gameObject.SetActive(false); } //平面認識の機能をオフ planeManager.requestedDetectionMode = PlaneDetectionMode.None; onTach = true; } } }
21.XR Originにスクリプトをアタッチ
22.AR Plane ManagerのPlane PrefabにAR Default Plane
スクリプトのKoDuckPrefabにAR表示用に準備したPrefabをドラッグ&ドロップ
23.koDuckは
free3d.com
このサイトで❝psyduck pokemon❞で検索できます
これをダウンロードしスケール 回転を変更 さらにちょっとだけアニメーションをつけました
あとはデバイスをつないでビルドして実行です
ビルドの手順はドラゴン召喚の19.~21.をご参照ください
実行するとまず平面認識の枠が表示されます(認識されるまで少し時間がかかります)
枠内をタップするとその位置にコダックが表示されます
コダックかわいいー!昔から一番好きなポケモン(笑)
小さい子に見せたらどんな反応をしてくれるかな 楽しみです