Cinemachine3.0でFPS視点を作る

## はじめに
Cinemachine3.0に関する情報が少なかったので、
**今回はCinemachine3.0でFPS視点を作っていきます。**
この記事を読んでCinemachine3.0の使い方がなんとなくわかってもらえたらいいなと思います。
## Cinemachineを用意する
GameObject > Cinemachine > Cinemachine Cameraを選択
![スクリーンショット 2024-12-28 021429.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3887857/a3dc8abf-ea0a-c6d0-d952-85cb926b914c.png)
HierarchyにCinemachine Cameraが追加されたら成功です
![スクリーンショット 2024-12-28 022617.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3887857/a2e9d7de-2c88-a1b0-d6fb-b3c174bca2ad.png)
## Cinemachine Cameraの設定をする
先ほど用意したCinemachine Cameraを選択してCinemachine Cameraコンポーネントの設定を調整します。
1. ProcedualComponentsの下にあるPosition ControlでFollowを選択します。
![スクリーンショット 2024-12-28 023319.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3887857/1b797096-2aa3-3bc5-45b8-90526973dfe9.png)
下の写真のようになればOK
![スクリーンショット 2024-12-28 023655.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3887857/7176041a-e214-5957-c27b-4250dcfae909.png)
警告は一旦スルーします。
PositionControlでFollowを選択すると、Cinemachine Followコンポーネントが追加されます。
2. Cinemachine CameraコンポーネントのProcedualComponentsの下にあるRotation ControlでPan Tiltを選択します。
![スクリーンショット 2024-12-28 024210.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3887857/946c7094-3c82-e291-ccce-cd50a296f0e7.png)
下の写真のようになればOK
![スクリーンショット 2024-12-28 024338.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3887857/6eea44d0-17cb-860c-c6cb-5d1f838c3333.png)
Rotation ControlでPan Tiltを選択すると、Cinemachine Pan Tiltコンポーネントが追加されます。
3. Cinemachine Pan Tiltコンポーネントの下にあるAdd Input Controllerと書かれたボタンを押します。
下の写真のようになればOK
![スクリーンショット 2024-12-28 025138.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3887857/bb0a3e7b-b85b-c03c-12c1-ac4a4ca2d69f.png)
するとCinemachine Input Axis Controllerコンポーネントが追加されます。
Cinemachine CameraのCinemachine CameraコンポーネントのProcedual Componentsの下にあるPosition ControlがFollow、Rotation ControlがPan Tiltになっていることと、次のコンポーネントがアタッチされていることを確認したら次へ。
下の写真のようになればOK
![スクリーンショット 2024-12-28 025512.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3887857/a38909ce-3dc0-1f1b-e5dd-2a657edb4031.png)
## 各コンポーネントの設定
まずプレイヤーを準備します。細かいことは割愛します。
![スクリーンショット 2024-12-28 031310.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3887857/eda1deee-23ad-a61c-8c7e-3b3837a36dcf.png)
プレイヤーの準備ができたら次へ
1. Cinemachine Cameraの設定
Cinemachine CameraコンポーネントのTracking Targetにカメラが追従するオブジェクトをアサインします。今回はFPSを作るのでプレイヤーの頭にあたるオブジェクトとしてPlayer Headをアサインしています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3887857/5e10b608-fa99-db92-51ef-9e1cadb80fd6.png)
しかし、このままではカメラがプレイヤーの後ろ側にあります。
![スクリーンショット 2024-12-28 032438.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3887857/2365d127-50dd-f9ac-92eb-5371714f2622.png)
この問題を解決するために次に進みましょう。
2. Cinemachine Followの設定
まずCinemachine FollowコンポーネントのBinding ModeをWorld SpaceからLock Targetに変更します。
![スクリーンショット 2024-12-28 033028.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3887857/fa6ab0f7-0f21-1a71-7536-2c58864a1596.png)
下の写真のようになればOK
![スクリーンショット 2024-12-28 033159.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3887857/22963d94-0f0d-de4c-b30b-7725b3c73945.png)
次に、Rotation Danping、Position Damping、Follow OffsetのXYZの値をすべて0にします。
![スクリーンショット 2024-12-28 033413.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3887857/18befb97-e58b-ca5a-effa-c24364a65868.png)
すると、カメラが割といい感じになります。
![スクリーンショット 2024-12-28 033704.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3887857/28b85c46-827f-1e91-5e01-091e9c603ff7.png)
![スクリーンショット 2024-12-28 033724.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3887857/c00ecdb4-1cf6-f374-e699-ca5b1a9aafae.png)
カメラの位置がずれていると感じた場合はFollow Offsetの値を調整してください。
ここで試しに実行してみると、マウスを動かすとすでにカメラを動かせるようになっています。
<iframe width="560" height="315" src="https://www.youtube.com/embed/Pla6izgZ1Os?si=S5B4W4-mOaKn5HUX" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
プレイヤーの正面がカメラの正面と別方向を向いているので、スクリプトで調整します。
Main Cameraの角度を取得してプレイヤーの向きに反映させるとよいでしょう。コードは割愛します。

3.Cinemachine Pan TiltとCinemachine Input Axis Controllerについて
Cinemachine Pan TiltコンポーネントのPan AxisとTilt AxisのRangeを調整すると、カメラを動かせる角度を調整することができます。
360°周りを見渡したいときはWrapのチェックボックスにチェックをいれるとよいでしょう。
![スクリーンショット 2024-12-28 035944.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3887857/763e2f1a-5a00-4209-e8af-2efaa76cc9fd.png)

先ほど実行時にカメラを動かすことができたのはCinemachine Input Axis Controllerコンポーネントのおかげです。
デフォルトでLegacy Inputに「Mouse X」「Mouse Y」が入力されているからなのか、マウスカーソルを動かすとカメラが回転するようになっています。
さらにInput Systemにコントローラーごとのカメラを動かす方法を登録しておけば、Cinemachine Input Axis ControllerのInput Actionに登録した処理をアサインするだけで簡単にマルチプラットフォーム対応のFPSコントローラーができちゃうんです。
![スクリーンショット 2024-12-28 041655.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3887857/e7b6bd83-f197-7aa9-a531-4d955bd348cb.png)
それから、カメラを動かすときにこのパラメーターを調整したり、観察してみてください。
## 最後に
今回はCinemachine3.0を使ってFPS視点を作りました。
Cinemachine3.0には他にもいろいろ機能があるのでぜひ試してみてください。