MRが楽しい

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

HoloLens2でホロモンアプリを作る その42(両手の位置に合わせてアイテムを持つ)

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

今回は両手の位置に合わせてアイテムを持つロジックを実装します。

アイテム保持位置の判定ロジック

以下の常に2つのオブジェクトの中央位置にオブジェクトを配置するスクリプトを作成しました。
・TrackingTargetBetween.cs

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

namespace HMProject.HoloMonUtilities
{
    public class TrackingTargetBetween : MonoBehaviour
    {
        [SerializeField, Tooltip("追跡対象トランスフォーム")]
        private Transform p_TargetTransformOne;

        [SerializeField, Tooltip("追跡対象トランスフォーム")]
        private Transform p_TargetTransformTwo;

        // Start is called before the first frame update
        void Start()
        {
        }

        // Update is called once per frame
        void Update()
        {
            Tracking();
        }

        /// <summary>
        /// 位置トラッキング
        /// </summary>
        private void Tracking()
        {
            // 2つのトランスフォームの中央をトラッキングする
            this.transform.position = Vector3.Lerp(
                p_TargetTransformOne.position,
                p_TargetTransformTwo.position, 0.5f);
            this.transform.rotation = Quaternion.Lerp(
                p_TargetTransformOne.rotation,
                p_TargetTransformTwo.rotation, 0.5f);
        }
    }
}

f:id:bluebirdofoz:20210622232355j:plain

オブジェクトにスクリプトを設定します。
スクリプトの参照トランスフォームに、ホロモンの右手と左手の参照を設定します。
f:id:bluebirdofoz:20210622232413j:plain

手のオブジェクトは手首の位置を示すので、オフセットを設定した子オブジェクトを作成し、そこにアイテムを保持するスクリプトを設定しました。
f:id:bluebirdofoz:20210622232423j:plain
f:id:bluebirdofoz:20210622232438j:plain

動作確認

ホロモンにアイテムを持ってもらい、動作確認します。
両手で挟むようにアイテムを持っていれば成功です。
f:id:bluebirdofoz:20210622232448j:plain

スクリプト側でアイテム位置を制御しているため、アニメーション側は手の位置をある程度自由に変更できます。