VRゲーム開発メモ

UnityでVRゲームを開発する際の私的なメモです。

開発環境

私の開発環境

参考までに私の開発環境を記載しておきます。

  • 開発用PC:Inspiron 16 Plus
  • VRヘッドセット:Meta Quest 2

開発用PCの準備

VRゲーム開発にはGPUを搭載したPCがおすすめです。
また、私は外部の勉強会に参加することが多いので以下のノートPCにしています。ただ、以下のPCは指紋認証のログインが度々動作しなくなるので他のPCが良いかもしれません。

Inspiron 16 Plusノートパソコン:ノートパソコン
第12世代インテル Core H-seriesプロセッサーとクアッド スピーカーを搭載したDellの新しいInspiron 16 Plusノートパソコンをご購入いただくか、すべてのノートパソコンをDell.comでご覧ください。

その他のPCおすすめは以下をご覧ください。

VR・AR開発用のおすすめPC | ゲーム開発歴8年の現役エンジニアが紹介! - BOZNEWS VR
ゲーム開発者のナカノです。 VR・ARアプリの開発を始めようとされている方におすすめのPCをご紹介します。 私は約8年ゲーム開発をしており、VRゲームの開発も4年前から始めました。 またVRゲームはも

Unityのセットアップ

以下のページを参考にUnityをセットアップしてみてください。

【Unity Hub】Unityをインストールする方法
本記事では、Unity Hubを使ってUnityをインストールする方法を説明します。Unity Hubのダウンロード/インストール方法から説明するので、Unityをまだ使ったことがない方や興味があるという方はぜひ読んでみてください。

インストールの際に、ビルドに使用するので以下のようにAndroid用のモジュールはインストールするようにしてください。

もしインストールの過程で2022 LTSがインストールされなければ、インストール後に以下の右上の「Install Editor」からインストールしてください。

VRヘッドセットのセットアップ

Unityのインストールが完了したら、以下のページの「Questを開発者モードにする」含めてそれより前の工程をすべて実行して、Quest 2をPCに接続できるようにしてください。

Unity + Meta Quest開発メモ
UnityでQuest / Quest 2 / Quest Pro対応アプリを開発する方法やTipsをまとめています。

Quest以外のヘッドセットでも動作可能なXR Interaction Toolkitを活用する場合は以下の記事をご参照ください。
私はアセットは自作予定なので3D(URP)でプロジェクトを作成しています。

Unity VR開発メモ(XR Interaction Toolkit)
XR Interaction Toolkitと主にOpenXR Pluginを使用したUnity最新方式でのVRアプリケーション開発方法についてまとめています。

VRヘッドセットとPCの接続

以下の手順を参考に、VRヘッドセットとPCを接続するQuest Linkを実行してください。
接続することで、ゲームをビルド(実行可能なファイルにすること)をしなくてもゲームをプレイできて時間の節約になります。

MetaQuest 2とPCをケーブルで接続する「Quest Link」を解説! ケーブル無しの「Air Link」の方法も紹介
VRヘッドセットMeta Quest 2は、基本的にはPCに接続しなくても、そのまま単独で使用できます。しかし、あえてPCに接続することで、より本格のVRコンテンツを体験できるシステムがあります。それが「Quest Li

開発用エディタのセットアップ

開発用エディタはUnityに付属のVisual Studioが利用いただけます。

本キットではデフォルトの開発用エディタが開発効率の観点からRiderになっています。
Visual Studioで開発する場合は、UnityエディタのEdit>Preferencesから以下の通り開発環境をVisual Studioに切り替えてください。

Riderに興味ある方は以下もご覧ください。
Riderは有料ですが、開発効率の向上につながる様々な機能があるため元が取れると考えています。
無料期間もあるのと、学生は無料なので是非使ってみてください。Riderの機能については以下をご参照ください。

Riderのセットアップ方法については以下をご参照ください。

JetBrains Rider をインストールする | JetBrains Rider ドキュメント
JetBrains Rider は、Windows、macOS、Linux オペレーティングシステムで一貫したエクスペリエンスを提供するクロスプラットフォーム IDE です。前提条件:Rider システム要件、macOS で Rider を使用するための前提条件、Linux で Rider を使用するための前提条件、V...

バージョン管理ツールのセットアップ

バージョン管理ツールを使うことで、変更の履歴が保存されるので心置きなく変更できます。
私は操作がわかりやすいのでGitHub Desktopを利用しています。GitHub Desktopのセットアップは以下を参照してください。

GitHub Desktopのインストール方法 - GitHub Docs
サポートされている Windows または macOS オペレーティングシステムに GitHub デスクトップをインストールできます。

VR開発スターターキット

以下のキットが無料で機能が揃っていて良いです。

XRI Starter Kit | ゲームツールキット | Unity Asset Store
Get the XRI Starter Kit package from MikeNspired and speed up your game development process. Find this & other ゲームツールキット options on the Unity Asset Store.

上記のアセットをプロジェクトにインポートする前に、OpenXR Managementを先にインポートして以下の設定を行う必要があるのでご注意ください。

セットアップ動画は以下です。

VR酔い対策モジュール(TunnelingVignette)のセットアップ

XR Interaction ToolkitのSampleの中に含まれている、VR酔い対策で移動中などに視界が狭くなるツールです。

インポート後に以下のようにMain Camera配下に配置してLocomotion Viggette ProvidersにXR Originを追加し、視界を狭くしたい操作を選択する必要があります。

unityroomにアップできるようにする

unityroomにVRゲームをアップするには下記を参考にプロジェクトを作成してください。

ヘッドセットをかぶらずにプレイするXR Device Simulatorのセットアップ

  • 移動するのはTキーを押してからWASD
  • 向きを変えるのはYキーを押してからAキーかDキー
  • ものを持つのはTキー(左手)かYキー(右手)を押してからマウスを動かしてGキー

mocopiを活用したモーション作成

私はモーションの作成に以下のmocopiを使用しています。肩より上に腕を持っていく動きが上手く取れないので、剣戟のモーションを作成する場合は要注意です。私は肩より上にあげないでよい動きに絞っています。

モバイルモーションキャプチャー mocopi | ソニー
モバイルモーションキャプチャー mocopi(モコピ)の商品ページです。

Unity用のSDKがあるため、そちらを使用してmocopiを装着した際の動きをUnityに送っています。

Sony Corporation - mocopi | mocopi Receiver Plugin開発 | Unity | mocopi Receiver Plugin for Unityについて
mocopiデベロッパーサイトへようこそ。このサイトでは、mocopiを活用いただくために、mocopi Receiver PluginやMobile SDKの利用方法や開発方法について説明しています。

Unity上でモーションを録画してAnimationファイルにするのは、以下のEasyMotionRecorderを使用しています。

GitHub - neon-izm/EasyMotionRecorder: Unityエディタ上でVRIKなどのモーションキャプチャをしたHumanoidキャラクターのモーションを記録, 再生をするスクリプト
Unityエディタ上でVRIKなどのモーションキャプチャをしたHumanoidキャラクターのモーションを記録, 再生をするスクリプト - GitHub - neon-izm/EasyMotionRecorder: Unityエディタ上でVRIKなどのモーションキャプチャをしたHumanoidキャラクターのモーションを記...

EasyMotionRecorderの手順を参考に、モーションのAnimation Clipを作成したら以下のようにMocopi Avaterに適用します

作成したAnimation Clipはデフォルトで床に沈んでしまうので、以下の設定を変更して床に沈まないようにします

Animationウィンドウで、余計な動きを削除します。一番上の行をドラッグして選択するとすべての行を選択できるので、その状態でDeleteキーです。

VRゲーム開発

ゲーム開発入門

Unityでのゲーム開発が初めての人は以下の入門書を読んで実際にやってみることをオススメします。
VRゲーム開発の入門要素はありませんが、まずはUnityの基本を学ぶのが大切です。
どちらかだけでもよいのですが、それぞれ別の機能を学べるので是非両方チャレンジしてみてください。

VRゲーム開発については、以下の本で学んだ後にVRの開発環境をセットアップして色々試しながら学ぶのがよいでしょう。良い教材ありましたら、Xで教えてください。

オープンソースで利用可能なアセット

Unityのアセットストアのアセットはオープンソースでの活用が禁止されています。そのため、オープンソースで活用できるアセットを利用するか自作する必要があります。

ここではオープンソースで利用可能、つまり再配布可能なアセットのサイトを列記します。

3Dモデルのアセットサイトです。アセット数も豊富でライセンスによる絞り込みが可能です。私は改変や商用利用に制限の無い「CC BY」、「CC0」の2つで検索することが多いです。

Sketchfab - The best 3D viewer on the web
With a community of over one million creators, we are the world’s largest platform to publish, share, and discover 3D content on web, mobile, AR, and VR.

再配布可能な効果音やBGMのサイトです。特に効果音が豊富です。

BGM・ジングル・効果音のフリー素材|OtoLogic
5000点を超える高品質なBGM・ジングル・効果音のフリー素材が無料でダウンロード可能です。

日本語フォントを利用する場合は、以下のフォントが再配布可能です。

Noto Sans Japanese - Google Fonts
Noto is a global font collection for writing in all modern and ancient languages. Noto Sans JP is an unmodulated (“sans serif”) design for the Japanese language

上記フォントの使い方は以下が参考になります。

TextMesh Pro で日本語フォントを使う方法【Unity】
TextMesh Pro はデフォルトのフォントだと英語のみ使用可能なため、日本語を打ち込んでも四角(□)の形が表示されてしまいます。 本記事では TextMesh Pro で日本語フォントを使うための導入方法を紹介しま ...

3Dモデルのアセットのインポート

SketchFabのアセットのインポートをプラグインで行います。

Release Sketchfab for Unity 1.2.1 · sketchfab/unity-plugin
Installation Download the attached unitypackage and double click to import it into your Unity project. The plugin is available in the titlebar under Sketchfab/B...

上記プラグインはライセンスが明記されていないため、オープンソースのプロジェクトに含められません。そのため、私はインポート用の別プロジェクトを作成して上記ページの.unitypackageを実行してインポートしてから、ゲーム開発用のプロジェクトに移す方法を取ります。

バージョンは違いますが、インポート方法は以下です。

【Unityアセット】Sketchfab for Unityを使ってSketchfabから安定して3DCGをダウンロードする方法 | STYLY
本記事では、豊富な無料3DCGをダウンロードできるSketchfabから、モデルの形式や設定を問わず、安定的にアセットをダウンロードする方法をご紹介いたします! Sketchfabは、3Dモデルの投稿・共有ができるプラットフォームです。

インポートした際にピンクになる場合は以下の対応を行います。

[Unity]3Dオブジェクトがピンク色になった時の解決方法 - Qiita
概要3DオブジェクトのAssetがピンク色になってしまう事、よくあると思います。ここで説明するのは、URP環境のアプリを作ろうとしている方を対象にしています。2022年10月2日 操作説明をわ…

ユニティちゃんのURPプロジェクトへのインポート

インポート時にピンクになってしまったのですが、以下の記事を参照して解決しました。

Unityでユニティちゃんがピンクになるのを解決する

VR上で武器を持つ

武器を持てるようにする

武器を持つには、以下のコンポーネントを武器にアタッチします。これで、武器にコントローラーから出る線を当ててグリップボタンを押すと武器を持てます。

例えば剣の柄を持ちたい場合など武器を持つ位置や角度を変えるには、武器に空のオブジェクト(以下ではAttachPoint)をアタッチして、以下のAttach Transformに設定します。AttachPointオブジェクトの位置や角度を変更すると、武器を持つ角度が変わります。

角度を変更する際は、実際にVRヘッドセットでプレイして持ちながら角度を変えて、値をコピーしておいてプレイ終了後にエディタに貼ると調整しやすいです。

自分で仮のオブジェクトを作成する場合は、変形しやすいのでProBuilderがやりやすいです。
オブジェクトの面を、他の面を変形させずに移動する(凹ませたりする)のはShiftキーを押しながら動かします。

【Unity】複雑な形の3DのGameObject(ゲームオブジェクト)を作る方法(Probuilderを使う) | とんプログラミング
Unityでは、デフォルトで、CubeやSphereなどの3DのObjectが用意されていて、大きさや傾きを変えることはできる。しかし、もっと複雑な形を作りたいときもあると思うの...

武器を手元に引き寄せて持ちっぱなしにする

まず武器を手元に引き寄せるには、以下のコンポーネントのForce Grabにチェックをつけます。
武器を持ちっぱなしにするにはSelect Action TriggerをStickeyに変更します。

武器を最初から持っているようにしたい場合は、以下の部分に武器を設定します。XR Grab Interactableが設定されていないと表示されないので注意してください。

武器の軌跡を表示する

TrailRendererを使用する方法が簡単です。

Unityのエフェクトでの剣の軌跡の作り方を究める。
エフェクトのTrailを使って剣を振った際の軌跡を作るやり方を紹介していく。

敵を作る

巡回する敵を作る方法は以下です

Unityで敵に巡回させるならこの3ステップ(ランダム巡回もできる) | チャムコード

Unity 2022以降は敵を移動させるNavMeshの使い方が変わったので、注意です。また、敵に壁を迂回させるためにNavMesh Obstacleを使う場合は「Curve」のオプションを有効にして、壁が埋まっている範囲を移動対象外にしないと、敵が壁に向かって進んでしまうので気をつけてください。

AI Navigation (Unity 2022.2 以降) - i-school
Unity 2022.2 以降より、標準で搭載されていた AI Navigation(NavMesh) の機能が廃止され、Package Manager 経由でインストールして利用する形式になりました。 今まで Github にて公開されていた NavMeshComp...

コメント

タイトルとURLをコピーしました