検出した平面の交点を知る。モデルを立たせてみる【Unity+AR】

AR Plane Managerで平面がどんなふうに認識されるかわかりました。ここではその平面をタップすることで平面の上にモデルを登場させたいと思います。

目次

動画で確認出来ます

今回の作業内容は動画で確認することが出来ます。ARのセットアップなどは別途必要ですが、参考になると思います。わからない場合はこちらもご確認してください。

作業開始

プロジェクトはARのセットアップが出来た状態にしてください。床をタップする関係上、AR Plane Managerのセットアップが済んでいるといいかも。

アセットの用意

今回はケビンのアセットを利用します。こちらのURLにアクセスしてアセットを手に入れてください。

https://assetstore.unity.com/packages/3d/characters/humanoids/humans/3d-character-dummy-178395

お好みでアニメーションを追加してもいいですね。

スクリプト作成

モデルを立たせるためのスクリプトを作成します。スクリプト名はもちろんお好みでOKですが、今回はStandupというスクリプトを作成します。

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.ARFoundation;
using UnityEngine.XR.ARSubsystems;

public class Standup : MonoBehaviour
{
    public ARRaycastManager m_raycastMangaer;
    public GameObject m_prefCharacter;

    void Update()
    {
        if (0 < Input.touchCount)
        {
            Touch touch = Input.GetTouch(0);
            if (touch.phase == TouchPhase.Began)
            {
                List<ARRaycastHit> hitList = new List<ARRaycastHit>();
                if (m_raycastMangaer.Raycast(touch.position, hitList, TrackableType.All))
                {
                    Pose hitPose = hitList[0].pose;
                    Instantiate(m_prefCharacter, hitPose.position, hitPose.rotation);
                }
            }
        }
    }
}

Unityのセットアップ

Unity側の設定は主に2つ。

  1. ARで検出した床との当たり判定を取る部分
  2. Standup(先程作ったスクリプト)の設定

AR Raycast Managerを設定

ARの設定ができている場合、シーン内に「AR Session Origin」というゲームオブジェクトがあると思います(正確にはAR Session Originスクリプトがアタッチされているゲームオブジェクト)。そのゲームオブジェクトに「AR Raycast Manager」をアタッチしてください。

Raycast Prefabが空っぽになっていますが、何もなしでOKです。

Standupの設定

空のGameObjectを作成して、Standupスクリプトをアタッチしてください。2つほど設定する箇所があります。

設定項目場所
Raycast ManagerAR Session Origin
先程設定したやつです。右側のまるポチ押すと1つだけ出るはず
Pref Characterタップしたときに表示されるキャラクターのプレファブ
Projectビューのなかから設定してください。
下図のプレファブは青いモデルですが、お隣のプレファブでもOK

動作確認っ!

ここまでセット出来たらあとは動かしてみましょう。そのままであれば認識されている床が表示されると思います。そこをタップすることでプレファブにセットしたモデルが表示されるはずです。

広い場所であれば前に回り込んでモデルをじっくり見回すことも可能ですよ!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次