もふもふ技術部

IT技術系mofmofメディア

Hololens2 + Unityで自分の部屋にゾンビを召喚する

前回同様にMicrosoft公式のチュートリアルが完了したところからやります

過去にUnity単独でゾンビを扱った時の記事も参照しながら進めます。

MR空間にゾンビを召喚する

Window -> Asset Storeを開いて、「zombie」で検索。 以下のフリーのゾンビさんをインポートします。

スクリーンショット 2021-02-03 163417

Project -> Assets -> Zombie -> Prefabs -> Zombie1をSceneビューにドラッグ・ドロップし、X=0, Y=0, Z=1に配置します。Prefabsにzombie1, zombie2, zombie3とあるけど、置いたみた感じでは全部同じっぽい。

デフォルトのままのゾンビだと、勝手に走って勝手に倒れたりしてせわしないので、ただ歩けるようにします。

Project -> Assets -> Zombie -> Animation -> Zombieを選択し、Inspector -> OpenするとAnimatorビューが表示されるので、Any State, Entry, Z_Idle以外をすべて削除して、Z_Walkを追加、Z_IdleをクリックしてMake TransitionZ_Walkとつなげる。これでゾンビがただ歩くようになります。

スクリーンショット 2021-02-03 182318

Hololens2実機で確認する。なんかやけに高い位置を歩いてるな。

20210202 235613 HoloLens

我が家にゾンビを召喚する

次にゾンビに物理演算(Ridigbody)と衝突(Collider)を与えます(Inspector -> Add Component)。これにより、ゾンビが実際に空間認識されたオブジェクトにぶつかるようになります。つまり我が家にゾンビを閉じ込めることができる。

このとき、Rigidbody -> ConstraintsFreeze RotaionのXとZにチェックしておく。これをしておかないとゾンビが縦方向にぐるぐる回る超人技を見せてくれるようになります。

ColliderはCapsule Colliderを使います。

スクリーンショット 2021-02-03 175822

Hololens2はカメラの位置が、Unity空間でX = 0、Y = 0、Z = 0 の基点に配置されるらしく、カメラのPositionをいじっても0にリセットされてしまう。なので、カメラ以外のオブジェクトのY座標をすべて-1.7(人の身長くらい)にセットしてみた(あくまでもUnity上で動作確認するためなので、たぶんやらなくてもOK)。

この時点でHololens2実機で動かすとこんな感じになる。ゾンビはちゃんと空間を認識して、障害物より先にはいかなくなった。

20210203 003431 HoloLens

しかし、空間メッシュが表示されていてどうなっているかわかりづらいので、これを非表示にしていきます。公式のドキュメントを参考に進めた。

Hierarchy -> MixedRealityTookKitを選択、Inspector -> MixedRealtiyToolkitのプロファイルにDefaultHololens2ConfigurationProfileを選択して、cloneします。名前は何でもOK。ここではZombieMixedRealityToolkitConfigurationとした。

スクリーンショット 2021-02-03 173935

続いて、Spatial Awareness -> Enable Spatial Awareness Systemにチェック。ここでもプロファイルをcloneする。名前はZombieMixedRealitySpatialAwarenessSystemProfileとした。

スクリーンショット 2021-02-03 174207

Spatial Awarenessの設定が変更できるようになるのでDisplay Setings -> Display OptionOcclusionに変更。

スクリーンショット 2021-02-03 174328

これで空間メッシュが非表示になります。実機で試すとこんな感じ。

20210203 004837 HoloLens

ゾンビさんが我が家に遊びに来てくれました!!嬉しいですね!

次はゾンビが自分を追いかけてくる部分を作りたかったですが、今日は時間がないのでここまでにします。