Cinemachineとは
Cinemachineとはカメラの操作をスクリプトをかかずにプレイヤーの追従などをコンポーネントを追加するだけで実装できるものです。さらにただプレイヤーを追従するだけでなく、カメラ移動の細かい挙動であったりを調整することもできて、プレイヤーの遊んでいる体験を向上させるようなスムーズなカメラの挙動などができたりと機能が豊富な点が便利です。
現時点では Cinemachine のバージョンが 3 になり、インスペクター内の表示も変わったので、それについても見ていきます。
Cinemachineの実装方法
パッケージマネージャーから Cinemachine をインストール
ヒエラルキー上で Cinemachine > Targeted Cameras > 2D Camera を追加
追加した Cinemachine のオブジェクトのインスペクターの設定から、Tracking Target に追従するオブジェクトを割り当てる
Position Control を Position Composer を設定。
Followという設定にすると細かい設定はできないけど、プレイヤーを追従するだけならこちらの設定で問題ないよ!
Cinemachine Position Composerの設定
CameraPostition
カメラとターゲットの距離を指定できます。
- CameraDistance
透視投影のときのみ、値を大きくするとプレイヤーが遠く表示され、小さくすると近くになります。 - DeadZoneDepth
奥行きの設定ができます。2D では使用しません。
Composition
構図の設定ができます。プレイヤーが視覚的にどのように映るかの設定です。
- ScreenPosition
カメラ上でターゲットが表示される位置の設定です。 - DeadZone
プレイヤーが動いてもカメラが揺れない範囲を指定できます。
Dead Zone を設定すると、プレイヤーがジャンプをしたときにカメラが動かないので、視覚的にどの程度ジャンプしたか分かりやすくなるよ!
- HardLimits
カメラの移動制限の設定。背景の外にカメラがいかないようにします。 - CenterOnActivate
カメラがアクティブになったらプレイヤーを中央に合わせるかどうか。
TargetTracking
ターゲットの追従の設定ができます。
- TargetOffset
プレイヤーからのカメラの位置のオフセットを設定できます。 - 減衰
カメラの追従速度を設定できます。0 だと即時、1 だとスムーズに追従します。
移動先が見えるとプレイヤーが動きの予測ができて遊びやすくなるよ!移動速度の速いゲームとも相性がいいですね。
- Lookahead
プレイヤーの移動方向に応じてカメラが先読みします。
Timeでプレイヤーの動きの何秒先を予測するか設定します。
Smoothingはカメラの移動がスムーズになる度合いの調整です。
IgnoreYはプレイヤーのY方向の動きを追従するかどうかの設定です。
実装デモ
カメラがプレイヤーを先行して追従し、ジャンプ時にはゆっくりと追従するように設定されています。これにより、ジャンプの高さが視覚的にわかりやすくなり、アクションゲームとしての操作感が向上します。
まとめ
以上が Cinemachine でプレイヤーを追従するカメラを設定する手順でした。バージョンが変わり設定の項目が簡潔になり見やすくなりましたが、それでも設定できる項目が多いので、必要に応じて設定を変えられるといいですね。3D のゲームもいずれ作る予定ですので、その際にまた 3D 用のカメラ設定の仕方を載せようと思います!