今回はUnityのStandardAssetsにあるCamerasのCctvCameraを使用してみます。
キャラクターを写すカメラの動きは自身でスクリプトを作成しカメラに設定する事でも出来ますが、スタンダードアセットにはあらかじめいくつかのカメラワークをしてくれる機能が用意されていますので、今回はその中のCctvCameraを使用してみたいと思います。
CctvCameraを使用するとインスペクタで設定したターゲットを追いかけるようなカメラを簡単に作成する事が出来ます。
CctvCameraの配置
CctvCameraはAssets→StandardAssets→Cameras→PrefabsのCctvCameraプレハブをヒエラルキー上に配置する事で使用出来ます。
CctvCameraはカメラ機能にあらかじめカメラ操作用のスクリプトが設定されたプレハブとなっているのでこれを配置するだけで使用する事が出来ます。
シーン作成時にあるMainCameraと機能がかぶってしまうのでメインカメラを非アクティブにしたり削除、またはお互いを切り替えて使用したりします。
CctvCameraのインスペクタは下のようになります。
カメラ操作のスクリプトはLookatTargetとTargetFieldOfViewになります。
LookatTarget
LookatTargetは設定したターゲットをカメラが写す機能です。
インスペクタで設定出来る値を見ていきましょう。
FixedUpdateは固定フレームレート、LateUpdateはUpdateが行われた後、ManualUpdateは呼び出したいタイミングで自身でメソッド呼び出しをして実行させるタイプです。
TargetFieldOfView
TargetFieldOfViewはカメラのFieldOfViewを変更してターゲットをズームアップする機能です。
インスペクタで設定出来る値を見てみましょう。
FixedUpdateは固定フレームレート、LateUpdateはUpdateが行われた後、ManualUpdateは呼び出したいタイミングで自身でメソッド呼び出しをして実行させるタイプです。
このフィールドはスクリプトのどの辺で使っているのかわかりません・・・・、使っていない?
CctvCameraを使ってみる
CctvCameraのスクリプトの設定項目を見てきたので、設定をして確認をしてみましょう。
↑のように設定しました。
ヒエラルキー上に地面と動くキャラクターを設置しキャラクターのTagにPlayerを設定します。
LookAtTarget、TargetFieldOfViewスクリプトでAuto Target Playerのチェックを入れているのでPlayerタグを設定したキャラクターがTargetに設定されるはずです。
↑のようになりました。
CctvCameraの機能ではCameraのFieldOfViewを変更して拡大・縮小を表現しているのでカメラの位置を動かしているわけではありません。
その為、キャラクターとカメラの間に壁等が挟まるとキャラクターが見えなくなってしまいます。
遠目からスコープを使ったライフルで遠くの敵を狙うといったような時に使えるかもしれませんね。