MRが楽しい

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

ユニティちゃんがこっちを向く

MRの技術ではないですが、ユニティちゃんがこちらを見るようにします。
これでユニティちゃんがプレイヤーを認識しているように見え、より現実味が増すはずです。

参考にしたのはこちらです。
・こっち向いて機能の実装
 http://unimake2.blog.fc2.com/blog-entry-21.html

AssetStoreから『HeadLookController』をインポートします。

紹介ページにある通り、HeadLookController.csを少し改造してカメラの方を見るようにします。
設定時、カメラにアタリ判定(Collider)を付けるのを忘れないようにしましょう。

実行してみるとこんな感じ。
f:id:bluebirdofoz:20170413195414j:plain
横を向いているユニティちゃんに近づくと…
f:id:bluebirdofoz:20170413195431j:plain
こっちを見ました。HeadLookControllerの仕様上、瞳は動かないのが残念です。今後の課題とします。


今回は説明の通りに行わず、少しアレンジしてみました。
ユニティちゃん側で衝突判定を行うLookColider.csについて以下の実装コードとしました。

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

public class LookCollider : MonoBehaviour {
    AudioSource audioSource = null;

    public string searchTarget = "MainCamera";
    public GameObject messageTarget;

    public AudioClip impactClip = null;
    public float impactVolume = 0.5f;

	// Use this for initialization
	void Start () {
        // Add an AudioSource component and set up some defaults
        audioSource = gameObject.AddComponent<AudioSource>();
        audioSource.playOnAwake = false;
        audioSource.spatialize = true;
        audioSource.spatialBlend = 1.0f;
        audioSource.dopplerLevel = 0.0f;
        audioSource.rolloffMode = AudioRolloffMode.Logarithmic;
        audioSource.maxDistance = 5f;
        audioSource.volume = impactVolume;
	}
	
	void OnTriggerEnter(Collider col)
    {
        HeadLookController con;
        // 衝突対象が検索対象ならば実行
        if(col.tag == searchTarget)
        {
            //ルックコントローラを有効化
            con = messageTarget.GetComponent<HeadLookController>();
            con.enabled = true;
            //音声を再生
            audioSource.clip = impactClip;
            audioSource.Play();
        }
    }

    void OnTriggerExit(Collider col)
    {
        HeadLookController con;
        // 衝突対象が検索対象ならば実行
        if (col.tag == searchTarget)
        {
            //ルックコントローラを無効化
            con = messageTarget.GetComponent<HeadLookController>();
            con.enabled = false;
        }
    }
}

ユニティちゃんが離れたときはHeadLookControllerのスクリプト自体を無効化することで
視線の追跡を行わないようにしています。
HeadLookControllerの設定に変化が発生しないため、こちらの方が安全なはず?

後ついでに声も出るように…。やり方は前回勉強した立体音響の流用です。
・HOLOLENS 立体音響を再生する SPATIAL SOUND
 https://azure-recipe.kc-cloud.jp/2016/12/hololens-tutorial5/

変なところに拘りだしてしまう。楽しい。