Unityでカメラの設定とキャラクターの追従をさせる

今回はUnityのカメラの設定と追従についてやりたいと思います。

カメラはシーンに配置した物(人を含む)を表示する為にあります。ゲームの画面を見ている所ですね。

カメラは最初の位置に固定されるわけではなく、自由に移動させたり表示範囲を制限する事が出来ます。

アクションゲームでよくある視点の切り替えはカメラを切り替えてるんですね。
3Dではなく2Dゲーム等でカメラの切り替えをしようと思ったら、その視点の絵を描き直さないといけないという事を考えたら、3Dってものすごく便利ですよね(^。^)
(ここで言う2Dゲームとは昔のドット絵を描いて見た目を作るゲームの事です)

スポンサーリンク

カメラの設定をいじってみる

まずは最初から設置してあるMain Cameraのパラメータを変更して、カメラの機能を確認してみます。

まずは普通の状態が下画面です。

普通の状態のカメラ


カメラがキャラクターから少し遠いのでキャラクターに近づかせます。

Main CameraのPositionの値Zを-10から-5にして、カメラを移動します。

カメラをキャラクターに寄せる

上画面のようにキャラクターにカメラが近づきました。

カメラが固定視点のみでいい場合もありますが、キャラクターが移動する方向にカメラを移動したい事もあります。
そこで、カメラがキャラクターに付いていくようにしてみます。

カメラがキャラクターを追従する機能の取り付け

それでは、キャラクターにカメラが付いていく機能をつけてみます。

カメラにコンポーネントを取りつける

上画面のようにMain Cameraを選択し、そのインスペクタ上でAdd Componentをクリックする。

そこからScripts→UnityStandardAssets.Utilityとし

smoothfollowスクリプトを取りつける

上画面のようにSmooth Followを選択する。

smoothfollowのパラメータにmasasi君を設定

Smooth Followが追加されたら、「masasi」君をtargetにドラッグ&ドロップします。
ではUnityの実行ボタンを押してみましょう。

「masasi」君が動く場所にカメラがついていくようになりました!

カメラが見ている位置を調整する方法

しかし、カメラがずいぶん遠いですね、パラメータを調整して近づけます。
distanceが距離を表しているので距離を縮めてみます。

頭の後ろから覗くような視点を作りたいので、Distanceを2として近づけてみます。

カメラが足元を見てしまう

上のように足元の部分を見てしまってうまくいきません・・・。

Smooth FollowのDistanceがMain CameraのPositionに影響を与えるんですが、Heightの方は指定しても変化が起こらないので、Main Camera自体のPositionのY値を修正する必要があるみたいです。

しかし、それを調整してもなんだか思っていた視点にはなりません。
この原因はTargetが「masasi」君になっているせいだと思われます。

「masasi」君のPositionの基準が足元になっているせいかと・・・、その為Targetをちょっと変更してみます。

カメラが見るポイントをキャラクターの子要素に作成する

上のように「masasi」君を選択し、Create Emptyを選択します。
すると空のゲームオブジェクトができるのでその名前を「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を使うともっと簡単に出来ました。

followtargetスクリプトを使う

上の赤丸のように調整値を入れます。
単純なカメラの追従はこちらの方が簡単ですね。

次回はサブカメラについてやってみようかと思います。