本日はアプリ作成枠です。
HoloLens2でホロモンアプリを作る進捗を書き留めていきます。
今回はホロモンがうんちから逃げるメモです。
対象オブジェクトの反対側の座標へ逃げる
ホロモンがうんちを発見したら逃げるようにするため、対象の反対座標に向けて逃走する以下のロジックを作成しました。
/// <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度にズラしているのはホロモンの視覚システムでは真後ろを視認できないためです。
ホロモンがうんちを視認した場合はうんちオブジェクトを逃げ元オブジェクトとして設定するようにホロモンアプリに組み込みました。
動作確認
シーンを再生して動作を確認します。
ホロモンがうんちをするのを待ちます。
うんちを掴んでホロモンを追いかけてみます。
ホロモンがうんちを視界に捉えると、うんちの反対方向に逃走しはじめました。