日々是好日~every day is a good day~

日常の中の非日常の備忘録

【Unity】スマホをタップしてコダックを召喚

前にドラゴンを召喚する設定方法を投稿しました
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.をご参照ください
実行するとまず平面認識の枠が表示されます(認識されるまで少し時間がかかります)
枠内をタップするとその位置にコダックが表示されます

コダックかわいいー!昔から一番好きなポケモン(笑)
小さい子に見せたらどんな反応をしてくれるかな 楽しみです