前回の記事ではスクリプトファイルを使ってターゲットを追従するカメラを作成しました。 しかしUnityにはもっと簡単にターゲットを追従させる Cinemachine (シネマシーン)という機能が用意されています。
今回はこのCinemacine の使い方のご紹介です。
下の動画は「一分間Unity講座 スクリプトファイルで左右の回転を実現する方法」 のショート動画です。ご興味がございましたら、こちらの動画もご参照ください!
Cinemachine について
Cinemachine(シネマシーン)は、Unityのカメラ操作を簡単かつ高度に制御できるツールセットです。これにより、カメラの動きをスクリプトでコントロールする必要がなく、視覚的に直感的なインターフェースを使って、映画のようなカメラワークを実現できます。
CinemaChine には次のような様々なカメラ、機能が用意されています。
- バーチャルカメラ(Virtual Cameras):
- 実際のカメラではなく、撮影対象や動きを設定するための仮想的なカメラです。シーン内でプレイヤーやオブジェクトを追従したり、特定の位置に向けてカメラを固定したりできます。
- ブレンドリストカメラ(Blend List Camera):
- 複数のバーチャルカメラ間で滑らかに切り替えることができ、シーンの流れを自然に保てます。たとえば、プレイヤーが建物に入るときにカメラが屋外から屋内にシームレスに移動するような効果が可能です。
- クリアショットカメラ(ClearShot Camera):
- シーン内で最適なカメラアングルを自動的に選択してくれるカメラタイプです。主に複数のバーチャルカメラの中から、現在の状況に最も適したカメラを判断して切り替える機能を持っています。この機能により、プレイヤーやシーンの動きに合わせた最適なショットを自動的に提供でき、ダイナミックで映画のような視覚効果を簡単に実現できます。
- ターゲットグループカメラ(Target Group Camera):
- 複数のターゲット(オブジェクトやキャラクター)をグループ化して、それらすべてを追従するカメラ動作を設定できます。これにより、特定の範囲内の全てのターゲットを視野に入れることができます。
その他2Dカメラや、指定したレール上を移動する Dolly Camera など様々なカメラ、カメラの機能が用意されています。
Cinemachine のインポート
Cinemachine は初期設定ではシステムに組み込まれいていないので、使用するにはPackageManagerからインポートする必要があります。次の手順でCinemachineを取り込みます。
❶ 上部メニューのWindow を選択
❷ 展開されたメニューから PackageManager を選択
❸ Packages でUnity Regestry を選択
❹ リストから Cinemachine を選択(右上の検索でキーワード検索ができます)
❺ Installボタンを押して取込み
今回はターゲットを追従する機能を使いたいので、Cinemachine の「Virtual Camera」を使用します。
❻ 上部メニュー GameObject を選択
❼ Cinemachine を選択
❽ Virtual Camera を選択
Cinemachine の設定
上の作業でヒエラルキーにはそのVirtual Camera が配置されました。このオブジェクトを選択し、inspectorで各種プロパティを指定します。
- Follow :カメラが追従するターゲットオブジェクトを指定します。サンプルではUnityChanを指定
- Look At :カメラが何を捉えるかを指定するプロパティ、サンプルではUnityChanを指定
Lens (レンズ)
- カメラの視野角、フォーカス、ズームレベルなどを設定します。
- Vertical FOV(Field of View): 視野の広さ(視野角)を設定。値が大きいほど広角、小さいほどズームインします。
- Near Clip Plane / Far Clip Plane: レンダリングされる最も近い距離と最も遠い距離を設定します。
- Dutch (ダッチ): カメラの傾きを設定し、シーンに斜めの視点を加えることができます。
Body(ボディ)
- Transposer (デフォルト値): Follow ターゲットに対して一定の距離を維持しながら移動
- Do Nothing : バーチャルカメラは移動しない
- Framing Transposer : Follow ターゲットに対して一定の距離を維持しながら移動
- Orbital Transposer:Follow ターゲットに対して可変の距離で移動、オプションでプレイヤー入力を受け取ることも可能
- Tracked Dolly :事前定義されたパスに沿って移動
- Hard Lock to Target : Follow ターゲットと同じ位置を使用
Binding Mode(バインディングモード)
カメラがターゲットオブジェクトに対してどのように追従するか、またカメラの動きをどの座標系に基づいて行うかを決定する設定
- World Space(ワールドスペース)
- カメラはグローバルなワールド座標系に基づいて動きます。ターゲットの位置に関係なく、カメラは一定のワールド空間での動きをします
- Simple Follow with World Up(シンプルフォロー・ワールドアップ)
- カメラがターゲットに追従し、ターゲットが移動するにつれてカメラも同様に動きますが、カメラの回転は制御されません。ワールドの「上」方向を基準にして動くため、カメラの動きが滑らかになります。
- Lock To Target On Assign(ロック・トゥ・ターゲット・オン・アサイン)
- カメラがターゲットに一度「ロック」され、ターゲットに対しての位置関係が固定されます。このモードではカメラはターゲットのローカル座標系を基準に動きます。
- Lock To Target With World Up(ロック・トゥ・ターゲット・ワールドアップ)
- カメラはターゲットにロックされ、かつワールドの「上」方向を保ちます。これにより、ターゲットの回転に対してカメラも一緒に動きますが、常に地面の「上」方向を維持します。
- Lock To Target No Roll(ロック・トゥ・ターゲット・ノーロール)
- カメラはターゲットに追従しますが、「ロール」方向の回転(Z軸回転)は許可されません。ターゲットがどれだけ回転しても、カメラのロールは常に安定したままです。
- Lock To Target With Up(ロック・トゥ・ターゲット・ウィズ・アップ)
- カメラがターゲットに完全にロックされ、ターゲットのすべての回転(位置、回転、向き)に追従します。
Damping(ダンピング)
カメラがターゲットに追従する際の動きを滑らかにするための設定です。Dampingを調整することで、ターゲットの急な動きや方向転換に対して、カメラの動きを少し遅らせる(緩やかに追従させる)ことができ、自然なカメラワークを実現します。
- Position Damping(ポジションダンピング)
- X、Y、Z軸のDamping: カメラの位置がターゲットの移動にどの程度滑らかに追従するかを調整します。
- 効果: 値が大きいほど、カメラの追従が遅くなり、ターゲットが急に動いた場合でもカメラがゆっくりと後を追うような動きになります。値が小さいと、カメラがターゲットの動きに迅速に追従します。
- X、Y、Z軸のDamping: カメラの位置がターゲットの移動にどの程度滑らかに追従するかを調整します。
- Rotation Damping(ローテーションダンピング)
- Pitch(上下回転)、Yaw(左右回転)、Roll(傾き)の各軸のDamping: カメラの回転がターゲットの動きにどのように追従するかを制御します。VirtualCameraには Yaw Damping つまりY軸を中心とした左右の回転の遅延のプロパティが用意されています。サンプルでは10を指定して、ちょっとゆっくりターゲットを追いかける動きを作っています。(ターゲットが停止したときなどで効果が確認できます)
Aim (エイム)
- カメラがターゲットをどのように注視するかを制御します。Aimの種類によって、カメラの動きやターゲットへの追従が異なります。Aimのプロパティを調整することで、シーンの視覚的な演出やターゲットの見え方を細かく制御することができます。
- Composer: カメラがターゲットを常にフレーム内の特定の位置に収めるように動きます。
- Group Composer: 複数のターゲットをグループ化し、それらすべてがフレーム内に収まるようにカメラを制御します。
- Hard Lock At:ターゲットに対してカメラの向きを完全にロック、ターゲットがどこに動いても、カメラはそのターゲットに向き続けます。
- POV (Point of View):カメラの向きをプレイヤーの入力によって制御できるモード、プレイヤーがカメラの視点を直接動かす際に使われます。
■ Composer の場合の各プロパティ
- Tracked Object Offset(トラッキングオブジェクトオフセット)
- カメラが注視するターゲットのオフセットを指定します。ターゲットの中心ではなく、少し上や横にずらして注視したい場合に調整します。
- Lookahead Time(ルックアヘッドタイム)
- ターゲットの動きを予測して、カメラが先回りする時間を設定します。これにより、ターゲットが動く方向に少し前もってカメラが動き、よりスムーズな追従が可能になります。
- Lookahead Smoothing(ルックアヘッドスムージング)
- ルックアヘッドの動きをどれくらい滑らかにするかを調整します。値が大きいほど、予測された動きが滑らかになります。
- Dead Zone Width / Height(デッドゾーン幅・高さ)
- カメラが追従しない領域を設定します。ターゲットがデッドゾーン内にいる限り、カメラは動かず、ターゲットがデッドゾーンを出たときにカメラが動きます。これにより、ターゲットの小さな動きでカメラが頻繁に動かないようにできます。
- Soft Zone Width / Height(ソフトゾーン幅・高さ)
- カメラが少しずつ追従を始めるエリアを設定します。デッドゾーンを超えたターゲットの動きに対して、徐々に追従を始めることで、カメラの動きを滑らかにします。
- Bias X / Y(バイアス X・Y)
- ターゲットの位置を、カメラのフレーム内でどの位置に収めるかを設定します。バイアスを変更することで、ターゲットが画面の中心からずれた位置に表示されるように調整できます。
このほかにも様々なプロパティ値があり、非常に細かい設定が可能となります。
これでサンプルの動画のように、コード無しでターゲットを追従するカメラを作ることができました。
ファイブボックスでは、Unityの個別指導のオンラインレッスンを行っています。
ご興味のある方は当サイト、オンラインレッスンから、無料体験授業へお問い合わせ下さい。