はじめに
大人気の8番出口ライクなまちがいさがし・脱出ゲームの作り方をUnrealEngine歴2か月の初心者な私から、これから自分でゲーム開発はじめてみたい方、始めたけど何から手を付けていいかわからない超初心者に向けて詳しく解説していきます。
この解説のまちがいに気づいても引き返さないで最後まで見て脱出してください。
呼吸や歩行などのキャラの運動に応じたカメラの揺れも再現したい方は、こちらの記事で解説しています。
本記事のゴール
8番出口の主要な要素は前の記事で解説した違和感「まちがいさがし」と「無限ループ」でしょう。
これに加えて、FPSライクな1人称視点のカメラでリアルな地下通路に閉じ込められている雰囲気の演出となっているのも見逃せないポイントではないでしょうか?
リアルな背景部分はすでにたくさんの日本語記事があると思いますので、後回しにします。
まずはFPSカメラとTPSカメラを適宜切り替えましょう。
本記事を最後まで読むと、
- 「サードパーソン」から「ファーストパーソン」カメラ切り替え
- なぜサードパーソンテンプレートから初めるのをおすすめするのか
と、UnrealEngineで3Dゲームを作るのにかかせないカメラ制御の基礎がわかるようになります。
下記、YouTube動画で段階的に作り方紹介している内容の一部を再構成してまちがいさがしの仕組みを集約した記事です。
3人称カメラと1人称カメラの切り替え
まずはやり方からサクッと見ましょう。
下記は海外(英語)の方の動画ですが、ほかの日本語の記事よりわかりやすく実用的だと思いましたのでご紹介します。
英語から日本語への自動翻訳字幕でもなんとかわかるかと思います。5分ちょいです。
日本語で説明してほしい人向けに、簡単に再現図を加えて説明します。
1人称用カメラの追加
3人称視点のカメラはThirdPersonCameraに名前だけわかりやすく変えて放置して、1人称視点用のカメラを追加します。
私の解説動画では3人称のカメラ自体の位置を変えてますが、こちらの2台撮りでスイッチング可能にする作戦のほうが状況に応じて変えやすそうですね。
2024/6/27追記: FirstPersonCameraにもCameraBoomを追加してその子にしたほうがよいです。上下方向への回転が簡単かつ自然にできます。
自動起動解除
FPS用のカメラを選択した状態で、詳細タブからAuto Activateを検索等で探してチェックを外します。
これでゲーム開始時は3人称カメラのほうが映り、切り替える対象という扱いになります。
コーディング
Set Activeでさきほど自動起動しなくしたカメラのOn/Offを切り替えます。New Activeにチェックをつけると起動です。
3人称Onにするときは1人称をOffを同時に。逆も同様です。
FlipFlopノードは呼ばれるたびに前回と逆側を実行してくれる便利ノードです。
また、最後のUse Controller Rotation Yawの切り替えは、やるやらないでカメラと自キャラの回転の関係性が変わります。試してみたほうがわかりやすいのでご自身で確認してください。
肝心の呼び出し元の赤いノードはこの後説明します。今時点はなくてよいです。
入力とのマッピング
キーボードからさきほどのカメラ切り替え機能を呼び出せるようにします。
手順は
- InputActionとして「カメラ切り替えしてくれ」というイベントみたいなものを定義
- 自キャラの移動やジャンプなどのほかの入力系イベントと横並びで登録
- 物理的な入力装置(キーボードとかマウスとかゲームパッドのボタン等)と紐づけ
です。
ちなみに紹介した動画ではゲーム設定自体を変更していますが、UE5.3最新のサードパーソンテンプレートの設定にならって説明します。(ゲーム自体の設定でも可能は可能です。)
下記の画像の位置にIA_Jumpを複製してIA_Cameraを作りましょう。
ダブルクリックで編集画面を開きます。
IA_JumpだとTriggersのところがReleasedもついていますが、今回の「切り替え」はボタン長押しではなくて、押したら切り替えたいのでPressedだけにします(Releasedを削除し下画像の状態にしましょう)。
今度は編集画面閉じて一つ上の階層のIMC_Defaultをダブルクリックで編集します。
マッピング/Mappingsの下にIA_なんちゃらがならんでいるのでMappingsの横の+ボタンでIA_Cameraを追加しましょう。
閉じている場合は横向きの三角▶をおしてひらいて、他のをマネしてキーボードのCキーに割り当てましょう。(もちろん別なキーでもよいです)
キーボードのアイコンをクリックしてキーを押すと便利です。
これで準備完了です。
さきほどのBP_ThirdPersonCharacterのブループリントにもどり、
EnhancedInputAction IA_Cameraを設置してつなぎましょう。「IA_Camera」で検索するとみつけやすいです。
Enhanced:拡張, InputAction:入力アクション, 機能アップされた入力アクションイベントってかんじですね。あまりここを理解する必要はありませんが、詳しく知りたい方はしらべてみてください。
さて、これでCキーを押すと視点切り替え可能なゲームができました。
なぜサードパーソンから?
ファーストパーソンテンプレートはFPS(シューティングゲーム)のテンプレートです。
Unreal Engine 5 の ファースト パーソン テンプレートには次の要素が含まれます。
UnrealEngine公式ドキュメント
- 移動と発射ができるプレイ可能なファースト パーソン キャラクター。
- 拾い上げて発射物を発射できる銃。
- 基本的なジオメトリ (傾斜、プラットフォーム) のあるレベル。
- プレイヤーまたは発射物が衝突したときに反応する立方体。
戦う系の1人称視点を前提にしているので、日常を切り取るゲームには不要な銃を簡単に扱うための仕組みが含まれている一方、
1人称視点が前提なのでプレイヤー自身の姿は割愛されています。当然描画コストがかからないので、見ている景色等を低負荷で美しく仕上げられる効果があるでしょう。
しかし、
- FPSでも自身の腕は映り込む
- 下を向いたら自分の体や足が見える
- 鏡や水面に映り込む
- 影として全身が景色に映り込む(洞窟のような暗がりに少な目の照明を配置している場合などは特に)
など、ファーストパーソンでもキャラクター全身を表現しておいたほうが良い場面も多くあります。
また、ゲーム開発初心者にとっては、自キャラが見えないということそのものが、開発進めるうえでわかりにくいという点も見逃せません。
特にめり込んでしまったとか、落っこちた・横や後ろから何かに当たった時の処理などを1人称視点でデバッグするのは大変です。どのみちデバッグ用のカメラを設置して検証することになるでしょう。
おわりに
前回までの記事と組み合わせると、8番出口ライクゲームのコアな要素は完成かと思います。あとは通行人等のキャラクターなどの演出にかかわる部分でしょうか。
そのあたりは日本語での解説記事や動画もたくさんあると思いますので調べてみてください。またわかりにくいとかもっとわかりやすく解説できると思うくらい成長したら記事を書くかもしれません。
記事や動画を追加して詳しく解説していますので続きも是非ご覧ください。
コメント