Unity Adventure Creator:三人称視点と一人称視点のカメラの切り替え

Unityのアドベンチャーゲーム制作アセットAdventure Creator を使って、これまで勉強した内容を応用して、キャラクターが移動する際の三人称カメラとオブジェクトをクローズアップする時の一人称カメラを切り替えるシーンを作成してみます。

三人称カメラとクローズアップ用の一人称カメラを切り替える

毎度おなじみ、Adventure Creatorの新規シーン階層を作成します。手順はこちらの記事のとおり。メニュー:Adventure Creator >
Getting Standard > New Game Wizardを選択。プレイヤーの操作方法は今回も”Point & Click”を選択しました。

では、シーンの作成に入ります。以前のチュートリアルで作成したものを改造します。今回はUnityのAsset Store から無料のマテリアルアセットの”Yughues Free Pavement Materials – Nobiax / Yughues “を使ってみました。

今回はトイレと手洗いを複数配置して、天井付近の開口から光を採り入れ、開放的なトイレになりました。

今回はカメラにUnity提供しているポストエフェクトのアセット”Post Processing Stack – Unity Technologies “を追加しました。

室内はライトを使用していないため、ポストエフェクトを使用しないとこのようにかなり暗い画面になっています。このあたりの設定については、また別の機会に整理して記事にしたいと思います。

次に、こちらの記事を参考にプレイヤーキャラクターの設定とPoint & Clickで操作できるようにNavMeshプレハブを追加。カメラは”GameCamera Third-person”プレハブを使用しました。マウスだけでキャラクター操作ができるようにパラメータは次の通りに調整しました。

ここまでできたら、ゲームを再生して動作確認。カメラの調整をしておきます。視点回転制御が左ドラッグにしているのですが、キャラクター移動のPoint & Clickと微妙に相性が悪いような気がします。いずれ右ドラッグで視点回転制御ができるか調べたいと思います。

さて、やっと本題です。トイレ、または洗面台をクリックするとキャラクターがそちらに移動するようにHotspotの設定をします。まずは[Hierarchy]ウィンドウからトイレのオブジェクト”dirty_toilet”を選択。[Inspector]ウィンドウ > [Add Component]ボタンをクリック > Physics > Box Colliderを選択。追加された[Box Collider]コンポーネントは自動的に便器のオブジェクトサイズに調整されます。次にHotspotコンポーネントを追加します。もう一度[Inspector]ウィンドウ > [Add Component]ボタンをクリック > Adventure Creator > Hotspot > Hotspotを選択。これでHotspotコンポーネントが追加されます。

次にHotspotをクリックしたときにキャラクターの移動先となるマーカーを設定します。[Hotspot (Script)]コンポーネント > Walk-to marker: フィールドの右にある[create]ボタンをクリック。

便器の手前にマーカーを配置しましょう。こんな感じです。

次に、便器のHotspotをクリックしたときに実行されるアクションを設定します。今回はクローズアップ用のカメラに切り替えるアクションを作成します。[Hotspot (Script)]コンポーネント > Use Interactionパネルの右側にある[+]ボタンをクリック。自動的にフィールドに名前が追加されます。次の箇所をの設定をします

  • Player action: [Walk To Marker]
  • Face after moving?[✓]

ちなみにすぐ下にある[Examine interaction]パネルは右クリックした場合に実行したいアクションを設定できます。

アクションの設定の前にクローズアップ用のカメラを追加しておきましょう。[AC Game Editor] ウィンドウ > [Scene]タブ > Scene prefabs > Camera > [SimpleCamera]ボタンをクリック。[SimpleCamera]パネル > new prefab name: フィールドに”CloseupCam1: dirty_toilet”と入力。[Add new]ボタンをクリックします。

追加されたカメラ”CloseupCam1: dirty_toilet”を調整します。[Hierarchy]ウィンドウ > _Cameras > CloseupCam1: dirty_toiletを選択。こんな感じにしました。

次に先ほど便器の[Hotspot]コンポーネントの[Use interaction]パネルで追加したアクション”dirty_toilet: Use”の設定をします。[Hierarchy]ウィンドウ > _Interactions > dirty_toilet: Useを選択。メニュー:Adventure Creator > Editors > ActionList Editorを選択。[ActionList Editor]ウィンドウが開いたら最初のアクションノードを次のようにカメラを切り替えるアクションに変更します。

  • Action type: [Camera] [Switch]
  • New camera: [CloseupCam1: dirty_toilet]

次はナレーションを表示するアクションを追加します。最初のアクションノードの下側にある◯をドラッグして新しいアクションノードを作成。アクション内容は次の通りです。

  • Action type: [Dialogue] [Play speech]
  • Line text: [汚れた便器がある。]

次はマウス左クリックをした時に通常のカメラに切り替えるアクションですが、まずはマウス左クリックをチェックするアクションを追加します。アクションノードを追加して次の通りに設定します。

  • Action type: [Input] [Check]
  • Check type: [Single Tap Or Click]
  • If condition is met: [Stop]
  • If condition is not met: [Skip]

この[Input Check]アクションを設定する際のポイントは条件に合わない場合”If condition is not met: “のノード端子を自分自身に接続して処理をループさせる点です。ループさせることで ゲーム実行中、繰り返し左マウスクリックをチェックできるようになります。実はこの方法が分からず公式サイトのフォーラムのスレッド”how to use the Input Check Action “を見て解決するまで、すごい試行錯誤してしまいました。

さて、この[Input Check]アクションで左クリックをした場合”If condition is met”のノード端子をドラッグして新しいアクションを追加して、通常のカメラに切り替えるアクションの設定をしましょう。

  • Action type: [Camera] [Switch]
  • New camera: [GameCameraThirdPerson]

完成したアクションはこのようになりました。画像拡大

アクションが正しく動作するかゲームを再生確認しましょう。上手く行きました!

Hotspotを設定したオブジェクトにカーソルを重ねるとオブジェクト名が表示されますが、今回はクローズアップカメラに切り替わった際に字幕を表示するので不要ですね。

というわけでHotspotの設定を変更します。便器のオブジェクトを選択。[Inspector]ウィンドウ >
[Hotspot (Script)]コンポーネント > Label (if not name): フィールドに半角スペースを入力しておきましょう。これで名前が表示されません。

さぁ!最初の便器の設定が完了しました。あとはクローズアップカメラに切り替えたい他のオブジェクトも同じ設定を繰り返し行えばいいですね。出来上がったシーンをWebGLでビルドしました。

クローズアップカメラに切り替わった際の字幕表示はフォントを文字サイズを調整しました。三人称視点と一人称視点を切り替えることができるようになったので、ゲーム内のアイテム入手やアクション操作がスムーズにできそうです。

今日の感想

画像素材:フリー写真素材ぱくたそ