はじめに
XR Mecanim IK Plusというアセットを使用してOculusQuestでユニティちゃんを動かしてみます。
XR Mecanim IK Plus
XR Mecanim IK Plus 作者さんのページです。
unity-chan offical website
ユニティちゃんのページです。
XR Mecanim IK Plusに含まれているデモシーンは、UnityのVRサポート機能を使用しているので、Oculus Integrationなしで動作させることができます。
また、いくつか設定を変更することで、スクリプトを修正することなしにOculus Integrationでも動作させることができます。
開発環境
Unity 2019.2.11f1
XR_MecanimIKPlus.unitypackage
UnityChan_1_2_1.unitypackage
Oculus Integration for Unity - 1.42
ビルド手順
- 3Dで新規プロジェクトを作成します。
- Build Settings から Platform を Android に Switch Platformします。
- "XR_MecanimIKPlus.unitypackage"をXR Mecanim IK Plus 作者さんのページからダウンロードし、インポートします。
- "UnityChan_1_2_1.unitypackage"をユニティちゃんのページからダウンロードし、インポートします。
- Oculus Integrationを使用しない場合は、プロジェクト内の"SettingFiles.zip"を解凍し、"InputManager.asset"と"ProjectSettings.asset"を上書きします。その後、デモシーンを開くと動作させることができます。ビルドする場合は手順9を実施します。
- Oculus Integrationを使用する場合は、手順5は実施せずOculus Integrationをアセットストアからダウンロードし、インポートします。
- デモシーンに配置されている[XR CameraRig]は無効にして、代わりにOVRCameraRigを配置し、以下写真のように設定します。
- unitychan_VRAvatarを以下写真のように設定します。
- ビルドする際の設定は、以下写真のようなOculusQuest向けのいつもの設定です。
追記1
Oculus TouchでUnityちゃんの指を動かして遊ぼう
n_ryotaさんが公開されているスクリプトを使うとこんな感じで動かせます。
追記2
@yunagi_nagiさんが公開されている記事をみてDynamicBoneをつけてみたのですが、なぜか揺れません。
IK制御を外してエディタ上で動かしてみると揺れるので、IK制御と相性が悪い?
追記3
当たり判定をつけたくてSAColliderBuilderを使ってみたところ、足の挙動がおかしくなります。
IK_Foot_Linkage_CS.cs内の地面を判定する処理Physics.Raycastで、追加したコライダーにあたっているためのようです。
Unityちゃんのレイヤー設定で"Ignore Raycast"を設定してあげると、とりあえずは回避できました。
追記4
VRアプリを作りましたhttps://t.co/76v9qDdkNh pic.twitter.com/wWiP4zMn7Q
— 高浜 (@SatoshiTakahama) December 1, 2019
追記5
位置によっては顔の内側にカメラが入ってしまって周りが見えなくなる対策として、カメラのレイヤー設定してみました。
@Raspberlyさんが公開されている記事を見て、カメラに映る対象をレイヤーで制御できることに気が付いたので、この機能を使えば対策としてよさそうと思い試してみました。
Unityちゃんの場合、Character1_Head以下の階層にレイヤー設定して対象外にするとちょうどよい感じになりました。
ライセンス表記
![ユニティちゃんライセンス](https://qiita-user-contents.imgix.net/http%3A%2F%2Funity-chan.com%2Fimages%2FimageLicenseLogo.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=df2f88d1680d5cfda3b5cd578cecd9e7)
この作品はユニティちゃんライセンス条項の元に提供されています