現場レベルのゲーム制作が、すべてここで学べます。
この記事はUnity ホラー風3D脱出ゲームの作り方講座の第1回です。
本講座では、Unityを使って「8番出口」ライクなホラー風3D脱出ゲームの作り方を、わかりやすく解説していきます。
初心者の方でも安心して進められるように基礎から丁寧に説明しつつ、
中級・上級者の方にも「そんな方法があったのか!」と思えるようなテクニックを随所に盛り込みました。
最終的には、設定メニューや多言語対応システムといった実用的な仕組みも実装します。
本講座のプロジェクトは汎用性を重視した設計になっており、完成後も各自のゲームに合わせて簡単に再設計・拡張できる構成になっています。
プロジェクトの作成
まずはUnityの新規プロジェクトを作成します。
本講座では、Unity 6.2.* を使用して解説を行います。
基本的には Unity 6 系 のバージョンであれば問題なく進められますが、Unity 2023 以前のバージョン(6未満)には非対応となっておりますのでご注意ください。
テンプレートは 「Universal 3D」 を選択してください。
プロジェクト名は自由に設定して構いませんが、ここでは例として 「8番廊下」 として進めていきます。
保存先は、Unity Hub が指定する既定の場所で問題ありません。
ただし、作業環境やフォルダ構成に合わせて変更していただいても構いません。
Unity Version Control は、今回は使用しません。
バージョン管理が不要なため、OFF(無効) の状態にしておきましょう。

作業しやすいウィンドウ配置にカスタマイズする

今回の講座では、作業しやすいようにウィンドウの配置をカスタマイズします。ですがエディタレイアウトは好みの問題もあるので読者の方が開発しやすい配置になっていればなんでもOKです。
まず、Projectウィンドウの右側に「Game」ビューを配置し、
素材を確認しながら動作プレビューをすぐにチェックできるようにします。ついでにゲームビュー解像度指定を「16:9 Aspect」にしておきましょう。

さらに、「Project Settings」「Lighting」「Console」を
同じ下段エリアにまとめ、タブ切り替えで管理します。
これにより、設定やデバッグをすばやく切り替えられます。
- 左上「Edit」→「Project Settings」
- 左上「Window」→「Rendering」→「Lighting」

↑このようにタブの部分をドラッグ&ドロップして表示位置やタブのグループ分けを変更できます。
右側には「Inspector」ウィンドウを縦に2つ配置し、
上段でオブジェクト情報、下段でマテリアルやエフェクトを同時に確認できるようにしました。
- 「Inspector」タブの上で右クリック→「Add Tab」→「Inspector」

この構成によって、シーン編集・ライト調整・動作確認が1画面で完結します。
作業効率を重視する方におすすめのレイアウトです。
このエディタレイアウトだと同じインスペクター画面が2つ表示されるため、表示される情報量が少なくなっているように見えますが、2つのゲームオブジェクトを同時に編集したい場合などにエディタのカギマークを使い一つの画面だけ固定するような使い方が可能になります。

↑こちらは例えばの画面なので中身については気にしなくてOKです。
インポートと環境構築
ここでは、ゲーム制作を始める前の下準備を行います。
必要なアセットをインポートします。
この後の作業をスムーズに進められる環境を整えていきましょう。
3D Stealth Game: Haunted House のインポート

Unity公式の無料アセット 「3D Stealth Game: Haunted House | Tutorial Projects」 を導入します。
以下のリンクからアセットストアページを開き、「マイアセットに追加する」をクリックし、規約に同意して入手した後「Unityで開く」 をクリックしてプロジェクトにインポートしてください。
・3D Stealth Game: Haunted House | Tutorial Projects | Unity Asset Store
このアセットは、主にマップ構築や3Dオブジェクトの配置に使用します。
建物や家具などの基本モデルが揃っているため、ステージ制作を効率的に進めることができます。

ダウンロードが完了するまで少々待ちます。ダウンロードが完了したらインポートボタンを押します。
アセットをインポートする際に、下のような警告ウィンドウが表示される場合があります。
そのまま問題ありませんので、「Import」 または 「Install / Upgrade」 をクリックして続行してください。


その後どのファイルをインポートするかを選択する画面が出てきますが特に変更せず全てインポートしていきましょう。
インポートが完了したら、Projectウィンドウ の Assets フォルダ内を確認してみましょう。
中に 「_3DStealth…」 というフォルダが作成されていれば、インポートは正常に完了しています。
このフォルダには、今回使用するマップ用の3Dモデルや素材データが含まれています。
ここまで確認できたら、次のステップへ進みましょう。

TextMeshProで日本語を入力できるようにする
Unity6ではTextMeshPro(TMP)と呼ばれる機能を使って文字列の処理を行います。
TextMeshProには標準では日本語フォントが含まれていないため、
そのままでは「□」や「?」のように日本語が文字化けしてしまうことがあります。
ここでは、日本語を正しく表示・入力できるように設定していきましょう。
まず、Hierarchy(ヒエラルキー)ウィンドウで右クリックし、
「UI」→「Text – TextMeshPro」 を選択します。

自動的に Canvas、EventSystem、そして Text (TMP) オブジェクトが生成されます。
この「Text (TMP)」が、TextMeshProを使用したテキスト表示用のUIオブジェクトです。
TextMeshPro(TMP)を初めて使用すると、
自動的にこのような 「TMP Importer」 ウィンドウが表示されます。

上の 「Import TMP Essentials」 と下の 「Import TMP Examples & Extras」 の
両方をインポート してください。
これらは、TextMeshProを使用するために必要な基本ファイルとサンプルリソースです。
インポートが完了すると、プロジェクト内に “TextMesh Pro” フォルダが追加されます。
インポートが完了したら「TMP Importer」のタブを閉じて大丈夫です。
また、今作成したTextMeshProのゲームオブジェクトの名前を「Center」に変更しておきましょう。

今後、このオブジェクトを画面中央に表示する照準として使用します。
Canvasのスケール設定を変更する
Hierarchyで 「Canvas」 を選択し、
Inspector(インスペクター)の 「Canvas Scaler(キャンバススケーラー)」 コンポーネントを確認します。
その中の 「UI Scale Mode(UIスケールモード)」 を 「Scale With Screen Size(画面サイズに拡大)」 に変更してください。
この設定を行うことで、画面の解像度が変わってもUIのサイズが自動で調整され、
どのデバイスでも同じ見た目で表示されるようになります。

テキストを画面中央に配置する
先ほど作成した 「Center」 オブジェクトを選択し、
RectTransform の Position(X / Y / Z) をすべて 0 に設定しましょう。
次に、Alignment(整列) を 上下中央(Middle Center) に変更します。
これでテキストが画面の中央に正しく配置されます。

日本語入力の確認
Hierarchyで「Center」を選択し、
Inspector(インスペクター)のテキスト欄に 「あいうえお」 と入力してみましょう。

すると、文字が表示されず 四角い□(豆腐文字) になると思います。
これは、TextMeshPro(TMP)が標準では日本語フォントに対応していないためです。

日本語フォントの導入(Selected U3D Japanese Font)
本来であれば、Googleなどが公開している日本語フォント(例:Noto Sans JP)を使用することが一般的ですが、
今回は手軽に導入できるよう、Unity Asset Store にある 「Japanese Font」 アセットを使用します。
このフォントをインポートすることで、TextMeshProでも日本語を正しく表示できるようになります。

・Selected U3D Japanese Font | 2D Fonts | Unity Asset Store
Unity Asset Storeで 「Japanese Font」 のページを開き、入手後
「Unityで開く」 をクリックします。
すると、Unityエディターが自動的に開き、
先ほどと同じように インポート画面 が表示されます。
内容を確認したら、「Import」 をクリックしてインポートを完了させましょう。
インポートが完了したら、Projectウィンドウ の 「Assets」 フォルダを確認してみましょう。
中に 「SU3DJPFont」 というフォルダが追加されていれば、正常にインポートされています。
このフォルダには、日本語表示に対応したフォントデータが含まれています。
次のステップでは、これを TextMeshPro(TMP)用のフォントアセット として設定していきます。

TextMeshProの標準フォントを日本語対応版に変更する
次に、Project Settings から TextMeshPro の標準フォント設定を変更します。
-
「Project Settings」 ウィンドウを開きます。
-
左側のリストから 「TextMesh Pro」→「設定(Settings)」 を選択します。
-
設定内にある 「Default Font Asset」 を
「mplus-1m-bold SDF Dynamic」 に設定してください。
この設定を行うことで、今後新しく作成する TextMeshPro テキストが
自動的に日本語対応フォントを使用するようになります。
Project Settingsで予め設定しておけばオブジェクトごとに毎回Font Assetを変更する必要がなくなるため、日本語UIの作成がよりスムーズになります。

これで、TextMeshProでも日本語が正しく表示されるようになりました。
先ほどcenterオブジェクトで入力した「あいうえお」も、もう□ではなくしっかりと表示されているはずです。

ただし、今回作成したこのテキストは照準(クロスヘア)として使用するため、
日本語の「あいうえお」ではなく、「・」 に変更しておきましょう。
これで、画面中央に小さな点が表示されるようになり、
プレイヤーの**視線の中心(ターゲット位置)**を示す目印として機能します。

これでフォントの設定は完了です。
ちなみに…
Fallback Font Assets の Font Asset List に
日本語以外のフォント(例:韓国語・簡体字中国語・繁体字中国語 など)を登録しておくことで、
文字が「□」になった際に自動的に該当言語のフォントに切り替えて表示してくれます。
多言語対応ゲームや、海外ユーザー向けUIを作る際にとても便利な機能です。

今回のプロジェクトファイル
ここまでの操作を行ったプロジェクトファイルを用意しました。
まとめと次回予告
今回は、アセットのインポートとTextMeshProを日本語対応させる設定と、画面中央に照準(クロスヘア)を表示する方法を学びました。
次回は、プレイヤーの操作を実装していきます。
前進・後退・左右移動、視点移動といった基本の移動操作に加えて、
足音の再生処理など、ホラーゲームらしい臨場感を演出する要素も作成していきましょう。
次回の記事↓

現場レベルのゲーム制作が、すべてここで学べます。






コメント