MRが楽しい

MRやVRについて学習したことを書き残す

HoloLens2でホロモンアプリを作る その86(ホロモンとアイテムが空間の狭間に落下した際に自動復帰する)

本日はアプリ作成枠です。
HoloLens2でホロモンアプリを作る進捗を書き留めていきます。
f:id:bluebirdofoz:20211229231822j:plain

今回はホロモンとアイテムが空間の狭間に落下した際に自動復帰するメモです。

空間の狭間に落下する

ホロモンアプリは HoloLens の空間認識を元に現実空間の地面を判定します。
しかし、まれに認識漏れが発生して地面に穴が空いていることがあります。
f:id:bluebirdofoz:20211229231837j:plain

今回はこの空間の狭間にホロモンが落ちた場合の自動復帰の仕組みを実装しました。
指定の高度以下にオブジェクトが達した場合、復帰のための処理を実行します。
・FallDownResetter.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;

namespace HoloMonApp.UtilitiesSpace
{
    public class FallDownResetter : MonoBehaviour
    {
        [SerializeField, Tooltip("落下時リセット呼び出し処理")]
        private UnityEvent ResetEvents;

        [SerializeField, Tooltip("リセット判定高度(Y)")]
        private float ResetYHeight = -30.0f;

        /// <summary>
        /// 定期処理
        /// </summary>
        void Update()
        {
            if (ResetYHeight > this.transform.position.y)
            {
                // 敷居値以下の高度になった場合リセット処理呼び出し
                ResetEvents.Invoke();
            }
        }
    }
}

ホロモンのゲームオブジェクトにスクリプトを設定し、位置リセットの呼び出しイベントを登録しました。
f:id:bluebirdofoz:20211229231854j:plain

動作確認

シーンを再生して動作を確認します。
f:id:bluebirdofoz:20211229231909j:plain

少々心苦しいですがホロモンを空間の狭間に落としてみます。
f:id:bluebirdofoz:20211229231921j:plain

地面がないため、ホロモンが遥か下まで落ちていきます。
f:id:bluebirdofoz:20211229231932j:plain

しばらくすると閾値の判定が働き、リセット処理が実行されて目の前にホロモンが戻ってきました。
f:id:bluebirdofoz:20211229231944j:plain