MRが楽しい

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

HoloLens2でホロモンアプリを作る その88(ホロモンがうんちから逃げる)

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

今回はホロモンがうんちから逃げるメモです。

対象オブジェクトの反対側の座標へ逃げる

ホロモンがうんちを発見したら逃げるようにするため、対象の反対座標に向けて逃走する以下のロジックを作成しました。

        /// <summary>
        /// 逃走先の座標を取得する
        /// (Y軸を元に135度反対側を逃走先とする)
        /// </summary>
        /// <param name="a_TargetPosition"></param>
        /// <param name="a_SelfPosition"></param>
        /// <returns></returns>
        private Vector3 RunTargetPosition(Vector3 a_TargetPosition, Vector3 a_SelfPosition)
        {
            // 支点座標と逃走対象座標を設定する
            Vector3 fulcrumPosition = a_SelfPosition;
            Vector3 targetPosition = a_TargetPosition;

            // Y軸に平行な対角ベクトルを求めるため、支点の高さを合わせる
            Vector3 fulcrumPoint = new Vector3(fulcrumPosition.x, targetPosition.y, fulcrumPosition.z);

            // 逃げ元へのベクトルを取得する
            Vector3 targetVector = targetPosition - fulcrumPoint;

            // 逃げ先への逆ベクトルを取得する
            Vector3 reverceVector = Quaternion.Euler(0.0f, 135.0f, 0.0f) * targetVector.normalized;

            // 対角線方向のベクトルを求める
            Vector3 diagonalVector = (reverceVector + fulcrumPoint);

            return diagonalVector;
        }

逃走先の座標を対角線上ではなく、135度にズラしているのはホロモンの視覚システムでは真後ろを視認できないためです。
f:id:bluebirdofoz:20211231235312j:plain

ホロモンがうんちを視認した場合はうんちオブジェクトを逃げ元オブジェクトとして設定するようにホロモンアプリに組み込みました。
f:id:bluebirdofoz:20211231235324j:plain

動作確認

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

ホロモンがうんちをするのを待ちます。
f:id:bluebirdofoz:20211231235350j:plain

うんちを掴んでホロモンを追いかけてみます。
ホロモンがうんちを視界に捉えると、うんちの反対方向に逃走しはじめました。
f:id:bluebirdofoz:20211231235403j:plain