今回はUnityのカメラの設定とカメラがキャラクターを追従するやり方についてやりたいと思います。
カメラはシーンに配置した物(人を含む)を表示する為にあります。ゲームの画面を見ている所ですね。
カメラは最初の位置に固定されるわけではなく、自由に移動させたり表示範囲を制限する事が出来ます。
アクションゲームでよくある視点の切り替えはカメラを切り替えてるんですね。
3Dではなく2Dゲーム等でカメラの切り替えをしようと思ったら、その視点の絵を描き直さないといけないという事を考えたら、3Dってものすごく便利ですよね(^。^)
(ここで言う2Dゲームとは昔のドット絵を描いて見た目を作るゲームの事です)
カメラの設定をいじってみる
まずは最初から設置してあるMain Cameraのパラメータを変更して、カメラの機能を確認してみます。
まずは普通の状態が下画面です。
カメラがキャラクターから少し遠いのでキャラクターに近づかせます。
Main CameraのPositionの値Zを-10から-5にして、カメラを移動します。
上画面のようにキャラクターにカメラが近づきました。
カメラが固定視点の場合もありますが、キャラクターが移動する方向にカメラを移動したい事もあります。
そこで、カメラがキャラクターに付いていくようにしてみます。
カメラがキャラクターを追従する機能の取り付け
それでは、キャラクターにカメラが付いていく機能をつけてみます。
上画面のようにMain Cameraを選択し、そのインスペクタ上でAdd Componentをクリックする。
そこからScripts→UnityStandardAssets.Utility(スタンダードアセットがインポートされていない場合はアセットストアからインポートしてください)とし
上画面のようにSmooth Followを選択します。
Smooth Followが追加されたら、「masasi」君をtargetにドラッグ&ドロップします。
これでカメラが「masasi」君を追いかけるようになります。
Unityの実行ボタンを押してみましょう。
「masasi」君が動く場所にカメラがついていくようになりました!
カメラが見ている位置を調整する方法
しかし、カメラがずいぶん遠いですね、パラメータを調整して近づけます。
distanceが距離を表しているので距離を縮めてみます。
頭の後ろから覗くような視点を作りたいので、Distanceを2として近づけてみます。
上のように足元の部分を見てしまってうまくいきません・・・。
Smooth FollowのDistanceがMain CameraのPositionに影響を与えるんですが、Heightの方は指定しても変化が起こらないので、Main Camera自体のPositionのY値を修正する必要があるみたいです。
しかし、それを調整してもなんだか思っていた視点にはなりません。
この原因はTargetが「masasi」君になっているせいだと思われます。
「masasi」君のPositionの基準が足元になっているせいです。
そこでTargetをちょっと変更してみます。
上のように「masasi」君を選択し、Create Emptyを選択します。
するとmasasi君の階層の下に空のゲームオブジェクトができるのでその名前を「LookAt」と変更しPositionを変更します。
Positionの変更の際にはGameタブからSceneタブに変更しておくと「LookAt」の位置がどこかわかりやすいです(キャラクターの階層で特定の場所の位置を確認したい時はSceneタブに切り替えます)。
頭の上当たりに位置を調整します。「LookAt」は「masasi」君の子要素になるので、「masasi」君を基準としたPositionの位置(相対値)になります。
最終的にMain CameraのPositionのY値を0.5、Smooth FollowのDistanceを1.5にしてみました。
下が実行した結果になります。
これでアクションゲームのよくある視点の作成が出来ました!
キャラクターに視点が近すぎる場合もMain CameraのPositionとSmooth Followの距離、「masasi」君に設定した見るポイント(LookAt)の調整をする事によって変えられます。
Smooth Followを使いましたが、Follow Targetを使うともっと簡単に出来ました。
上の赤丸のように調整値を入れます。
単純なカメラの追従はこちらの方が簡単ですね。
次回はサブカメラについてやってみようかと思います。