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つ。
- ARで検出した床との当たり判定を取る部分
- Standup(先程作ったスクリプト)の設定
AR Raycast Managerを設定
ARの設定ができている場合、シーン内に「AR Session Origin」というゲームオブジェクトがあると思います(正確にはAR Session Originスクリプトがアタッチされているゲームオブジェクト)。そのゲームオブジェクトに「AR Raycast Manager」をアタッチしてください。
Raycast Prefabが空っぽになっていますが、何もなしでOKです。
Standupの設定
空のGameObjectを作成して、Standupスクリプトをアタッチしてください。2つほど設定する箇所があります。
設定項目 | 場所 |
---|---|
Raycast Manager | AR Session Origin 先程設定したやつです。右側のまるポチ押すと1つだけ出るはず |
Pref Character | タップしたときに表示されるキャラクターのプレファブ Projectビューのなかから設定してください。 下図のプレファブは青いモデルですが、お隣のプレファブでもOK |
動作確認っ!
ここまでセット出来たらあとは動かしてみましょう。そのままであれば認識されている床が表示されると思います。そこをタップすることでプレファブにセットしたモデルが表示されるはずです。
広い場所であれば前に回り込んでモデルをじっくり見回すことも可能ですよ!
コメント