Unityのアドベンチャーゲーム制作アセットAdventure Creatorのチュートリアルを勉強中。今回はYouTubeで公開されているチュートリアルビデオAdventure Creator: Creating a first person game Tutorial の中から、キャラクターの位置にあわせてカメラを切り替える方法を勉強します。
キャラクターの位置にあわせてカメラを切り替える
YouTubeでAdventure Creatorの3Dゲームのチュートリアル動画が公開されています。
動画の31:04 – Using Triggersからキャラクターの位置にあわせて2つのカメラを切り替えるの手順が紹介されています。
カメラの配置
今回は前回のチュートリアルシーンを改造してカメラ切り替えを行いたいと思います。まずは切り替えるカメラを配置します。2つのカメラを追加して合計3つのカメラをシーン配置します。それぞれのカメラ名と位置は次の通りです。
- NavCam1:ゲームスタートのカメラ
- NavCam2:ドアの向こう側のカメラ
- NavCam3:ドア付近のカメラ
ドアの向こう側のカメラに切り替えるTriggerプレハブの配置
カメラを切り替えるアクションを設定するTriggerプレハブを配置します。[AC Game Editor]ウィンドウ > [Scene]タブ:Scene manager > Scene prefabs > [Trigger]ボタンをクリック。[Trigger]パネル > New prefab name: フィールドに”NavCam1 > NavCam2″と入力して[Add new]ボタンをクリックします。
Triggerプレハブを選択していない場合でも[Scene]ビューで表示されるように表示設定を変更しておきましょう。[AC Game Editor]ウィンドウ > [Scene]タブ:Scene manager > Scene attributes > Visibility > Triggers > [On]ボタンをクリックします。
Triggerプレハブにアクションを設定しましょう。[Hierarchy]ウィンドウ > _Logic > _Triggers > 追加したTriggerプレハブ”NavCam1 > NavCam2”を選択。[Inspector]ウィンドウ > AC_Trigger (Script)コンポーネント > Trigger properties > When running : [Run In Background]に設定。アクションをを次のように変更します。
- Action type: [Camera] [Switch]
- New camera: [NavCam2]
ではここでゲームを再生して動作を確認してみましょう。リンゴアイテムを手に入れてインベントリのリンゴアイコンをドアにドラッグしてクリック。ドアが開いたら壁の向こうに移動します。カメラが切り替わりました。成功です!
ゲームスタートのカメラに切り替えるTriggerプレハブの配置
ではゲームスタートのカメラ”NavCam1″に切り替えるTriggerプレハブを追加しましょう。今回は[AC Game Editor]ウィンドウから追加せずにシーンに配置したTriggerプレハブを複製しましょう。[Hierarchy]ウィンドウ > _Logic > _Triggers > Triggerプレハブ”NavCam1 > NavCam2”を選択。メニュー:Edit > Duplicateを選択。複製されたTriggerプレハブの名前を”NavCam2 > NavCam1”に変更します。位置はスタート側のドアのそば、つぎのように調整しました。
複製したTriggerプレハブにアクションを設定しましょう。[Hierarchy]ウィンドウ > _Logic > _Triggers > 複製したTriggerプレハブ”NavCam2 > NavCam1”を選択。[Inspector]ウィンドウ > AC_Trigger (Script)コンポーネント > Trigger properties > When running : [Run In Background]に設定。アクションをを次のように変更します。
- New camera: [NavCam1]
ではもう一度ゲームを再生して動作を確認してみましょう。ドアを開いて壁の向こうに移動。カメラが切り替わったら方向転換して戻りましょう。今回もちゃんとカメラが切り替わりました!
ドア付近のカメラに切り替えるTriggerプレハブの追加
キャラクターがドアに近づいたときにリンゴアイテムをドラッグしてドアをクリックしやすいようにカメラを切り替えます。切り替えるためのTriggerプレハブを用意しましょう。今回もシーンに配置済みのTriggerプレハブを複製します。[Hierarchy]ウィンドウ > _Logic > _Triggers > Triggerプレハブ”NavCam1 > NavCam2”を選択。メニュー:Edit > Duplicateを選択。複製したTriggerプレハブの名前を”NavCam1 > NavCam3”に変更します。位置はスタート側のドアのそばに配置、つぎのように調整しました。
複製したTriggerプレハブにアクションを設定しましょう。[Hierarchy]ウィンドウ > _Logic > _Triggers > 複製したTriggerプレハブ”NavCam1 > NavCam3”を選択。[Inspector]ウィンドウ > AC_Trigger (Script)コンポーネント > Trigger properties > When running : [Run In Background]に設定。アクションをを次のように変更します。
- New camera: [NavCam3]
ここで動作確認のためにゲーム再生をしてみます。キャラクターがドアに近づくとカメラ”NavCam3”に切り替わります。
しかしすぐにスタートカメラ”NavCam1″に切り替わってしまいます。これではカメラ”NavCam3”の意味がありません。
これを修正しましょう。プレイヤーがゲームスタート側の部屋にいる場合にTriggerプレハブ”NavCam2 > NavCam1”を無効にしておきます。そしてプレイヤーが反対側の部屋のTriggerプレハブ”NavCam1 > NavCam2”に接触した時にTriggerプレハブ”NavCam2 > NavCam1”を有効にすればOKだと思います。早速やってみましょう。
YouTubeの動画チュートリアルの手順を参考にTriggerプレハブの設定をします。Triggerプレハブ”NavCam2 > NavCam1”の設定を行います。[Inspector]ウィンドウ > [Add Component]ボタンをクリック。 > Adventure Creator > Save System > Remember Triggerを選択。追加したRemember Trigger (Script)コンポーネント > Trigger state on start: [Off]に変更します。
次にTriggerプレハブ”NavCam1 > NavCam2”の設定です。アクションを追加してTriggerプレハブ”NavCam2> NavCam1”を有効にしましょう。[Inspector]ウィンドウ > AC_Trigger (Script)コンポーネント > [Add new action]ボタンをクリック。アクションをを次のように変更します。
- Action type: [Object] [Send message]
- Object to affect: [NavCam2 > NavCam1]
- Message to send: [Turn On]
これでおかしなカメラの切替は直りましたが、もう一か所修正しましょう。反対側の部屋からスタート側の部屋に戻るとカメラ”NavCam3″に切り替わってしまいます。このカメラはドアを開けるときだけのカメラなので、ドアを開けたら無効にしましょう。
Triggerプレハブ”NavCam1 > NavCam3”の設定を行います。[Inspector]ウィンドウ > [Add Component]ボタンをクリック。 > Adventure Creator > Save System > Remember Triggerを選択。設定はそのままです。
次にTriggerプレハブ”NavCam1 > NavCam2”にアクションを追加します。AC_Trigger (Script)コンポーネント > [Add new action]ボタンをクリック。アクションをを次のように変更します。
- Action type: [Object] [Send message]
- Object to affect: [NavCam1 > NavCam3]
- Message to send: [Turn Off]
ここまでのシーンをWebGLでビルドしてみました。
やはりキャラクターがアイテムを使用する場面は、クローズアップしているほうがわかりやすくていいですね。
TriggerプレハブはHotspotプレハブと組み合わせて色々できそうですね。まだまだ試したいアクションは色々ありますが、今回はここまでにしたいと思いまます。