バッテラが如く

プログラミングしましょ!

【Unity】キャラクターを追従するカメラをCinemachineで作る方法

カメラは特定の位置を映すだけなので、キャラクターが移動してもカメラは動きません。

これをCinemachineというアセットを使いキャラクターに追従させるようにします。

Cinemachineはかなり複雑でキリがないので、今回はどうやったら追従できるかに焦点を当てて解説したいと思います。

■開発環境

  • MacOS Monterey (12.1) Unity (2021.3.2f1)
  • Cinemachineの導入

    Cinemachineはパッケージマネージャーでインストールが必要となります。

    インストールするには、

    Windows → PackageManagerを開きます。

    次にPackagesUnity Registryに切り替えます。(これ忘れがち)

    Cinemachineを選び右画面にあるInstallをクリックします。

    これで導入はOKです。

    今は使える状態になっただけで設定しないと何も変わりません。

    CinemachineBrainをカメラにアタッチ

    キャラクターを追尾させるカメラにCinemachineBrainを取り付けます。

    カメを選択 → Add ComponentCinemachineBrainをアタッチします。

    これでこのカメラはCinemachineの影響をうけるようになりました。

    VirtualCameraを新規作成

    次はVirtualCameraというものを作っていきます。

    ヒエラルキーウィンドウ上で
    右クリック → CinemachineVirtualCameraを作成。

    CM vcam1という名前のゲームオブジェクトが生成されたと思います。

    VirtualCameraはCameraという名前がついていますがCameraオブジェクトとは違い投影する機能はないので、あくまでも設定データだと理解しましょう。

    キャラクターに追従するようにする

    現状だとこのカメラは"誰に"追従するのか定まっていないのでそれを設定していきます。

    CM vcam1を選択するとCinemachineVirtualCameraというコンポーネントがあります。

    キャラクターに追従させたいのでFollowLook Atにキャラクターをセットします。

    そうすると既にカメラの見え方が変わりましたよね?

    このようにVirtualCameraをいじると(CinemachineBrainをつけた)カメラの位置や角度が自動で上書かれるようになります

    カメラ本体は一切いじらず調整できるのがCinemachineということです。

    画角を調整する

    このままだと追従はするけど近い遠いなど不都合がある状態だと思います。

    なので追従するときの画角を調整していきます。

    それをするにはBodyAimでやりますが、ここが複雑すぎて沼ります。

    なので自分が思う一番シンプルな方法を紹介したいと思います。

    BodyTransposerを使います。

    Transposerキャラと一定距離を保って追跡するというものです。

    分かりやすくいうとストーカーですね(笑)

    BindingModeWorkspace変更します。

    Follow Offset がオフセット値になります。

    LensVertical FOVをで画角の調整をします。

    実際にキャラクターを動かしながらパラメータを調整するとよいでしょう。

    完成

    これでカメラがキャラクターに追従するようになりました!