Unity Cinemachine 入門1 – 自動的にキャラクターを追いかけるカメラを作る (2D/3D)

今回のテーマ

  • Cinemachine 入門
    • 何か(キャラクター)を追いかけるカメラを作る

学習環境のセットアップ

Unity 2018.4 以降を想定しています。

  1. 新たにプロジェクトを作る
  2. Package Manager から Cinemachine, ProBuilder をインポートする
  3. アセットパッケージ LearningCinemachine.unitypackage をダウンロード・インポートする

解説動画

学習環境を確認する

以下のようにして、環境が正しくセットアップされたか確認しましょう。

  1. Assets/_LearningCinemachine/2D/ にあるシーン "2D with Cinemachine" と "2D" をそれぞれ開いて実行してみましょう
    • "2D with Cinemachine" は Cinemachine の機能を使っており、"2D" は使っていません
    • シーン "2D" に Cinemachine の機能を使って "2D with Cinemachine" のようにする方法を学びます
  2. Assets/_LearningCinemachine/3D/ にあるシーン "3D with Cinemachine" と "3D" をそれぞれ開いて実行してみましょう
    • "3D with Cinemachine" は Cinemachine の機能を使っており、"3D" は使っていません
    • シーン "3D" に Cinemachine の機能を使って "3D with Cinemachine" のようにする方法を学びます

2D ゲームに対して Cinemachine を使う

以下の手順で、2D ゲームに対して Cinemachine を使い、カメラがキャラクターを追うようにしてみましょう。

  1. シーン "2D" を開く
  2. Scene ビューが 2D モードになっていることを確認する
    • 2D モードになっていないと、Cinemachine のカメラが傾いてしまいます
  3. メニューの Cinemachine > Create 2D Camera を選び、仮想カメラ (Virtual Camera, vcam) を追加する
    • 仮想カメラのオブジェクト名は、既定では CM vcam1 になる
  4. 仮想カメラの CinemachineVirtualCamera コンポーネントの設定 "Follow" に、Spaceship オブジェクトをアサインする
    • これで、カメラが Spaceship を追うようになります
    • シーンを実行して確認してみましょう
  5. シーンを実行している最中に、CinemachineVirtualCamera コンポーネントの設定 "Body" - Lookahead Time, Lookahead Smoothing の値を調整してみましょう
    • Lookahead は「前方を見る」という意味です
    • Lookahead を設定することにより、進行方向を広く撮影することができます
  6. なお、CinemachineVirtualCamera コンポーネントの設定 "Save During Play" にチェックを入れておくと、実行中に変更した設定はそのままシーンに保存されます
    • ただし、ストレージには保存されないので、保存されていない印 (*) が付きます
  7. Main Camera オブジェクトの Camera コンポーネントの設定 "Projection" を Orthographic から Perspective に変えてシーンを実行してみましょう
    • 雲に遠近感が出て、2D ゲームの画面に空間的な奥行を表現できます

3D ゲームに対して Cinemachine を使う

カメラにキャラクターを追従させる

まずは、以下の手順で仮想カメラにキャラクターを追従させる設定をしてみましょう。

  1. シーン "3D" を開く
  2. メニューの Cinemachine > Create Virtual Camera を選び、仮想カメラを追加する
  3. 仮想カメラ (CM vcam1 オブジェクト) の CinemachineVirtualCamera コンポーネントの設定 "Follow" と "Look At" に Player オブジェクトをアサインする
    • CinemachineVirtualCamera コンポーネントの設定 "Body" - Follow Offset の相対座標から、カメラが Follow(追従)し、Look At(見る)する設定になっています
    • シーンを実行してキャラクターを動かしてみましょう
    • 前方に移動する時は問題ないが、回転すると回転が速すぎる問題があることがわかるでしょう
    • この問題を解決していきましょう
  4. CinemachineVirtualCamera コンポーネントの設定 "Body" - Yaw Damping の設定を大きくして挙動の変化を見てみましょう
    • Damping とは「動きをどれくらい遅らせるか(減衰)という意味があります
    • Yaw とは「Y 軸の回転」という意味です
    • つまり Yaw Damping とは「Y 軸が回転した時、カメラの追従をどれくらい遅らせるか」という意味になります
  5. CinemachineVirtualCamera コンポーネントの設定 "Body" - Follow Offset の Y と Z の値を変えてみましょう
    • これにより、カメラが "Follow" する対象からどの相対位置で追いかけるかを変えられます
    • Y = 3, Z = -5 くらいがちょうどいいでしょう
  6. CinemachineVirtualCamera コンポーネントの設定 "Aim" - Tracked Object Offset の Y の値を変えてみましょう
    • これにより、カメラが "Look At" する対象からどの相対位置を「見る」かを変えられます
    • Y = 1.5 くらいがちょうどいいでしょう

カメラが壁を突き抜けないようにする

現状では、カメラが壁を突き抜けてしまいます。ジャンプしたり、「壁際で壁に背を向ける」ように位置すると、それがわかります。Cinemachine の拡張機能 "CinemachineCollider" を使うと、カメラが壁を突き抜けないようにすることができます。以下の手順でやってみましょう。

  1. CinemachineVirtualCamera コンポーネントの一番下にある設定 "Extensions" の Add Extension から CinemachineCollider を選ぶ
    • Cinemachine Collider コンポーネントが追加されます
    • この状態で、ジャンプしたり壁際で壁に背を向けたりしてみましょう
    • カメラが壁を突き抜けないような動きになっているはずです
  2. Cinemachine Collider コンポーネントの設定 "Strategy" を変えてみましょう
    • カメラが壁に衝突した時、どのような動きをするかが変わります
    • 各設定の違いについては公式ドキュメントに説明があります

参考資料

ドキュメントは現時点で英語のものしかありませんが、検索すれば日本語の記事もいくつか見つかります。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です