Godot4+Phantom Cameraでカメラがプレイヤーをなめらかに追いかける

　Godot4用のプラグイン「Phantom Camera」を使うと、カメラがプレイヤーをなめらかに追いかけるようにできます。
　githubはこちらです。ドキュメントもあります。

https://github.com/ramokz

# バージョン
 Godot 4.1.3
 Phantom Camera 0.5.0.5

# AssetLibからPhantom Cameraをインストールして有効化する
　Godot4で新規プロジェクトを作成、AssetLibをクリックし、「Phantom」など入力するとPhantom Cameraが表示されます。クリックしてダウンロード、インストールします。
 ![2023-11-12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/70885a24-32ba-0fc8-de34-fe181dd4c507.png)

　インストールが成功したら、プロジェクト設定の「プラグイン」タブで、Phantom Cameraを有効化します。
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/cbcdfb43-83d2-c6c2-5851-49e3c08259a0.png)

　インストール先はres://addons/phantom_camera/です。
 　res://addons/phantom_camera/examples/example_scenes/にサンプルシーンがあり、メインシーンに設定して実行することができます。WASDキーで操作します。
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/1eb24780-463b-4407-5725-a2251ad6f5ba.png)

# サンプルシーンを作成する
　Phantom Cameraの確認用に、CharacterBody3DのPlayerとStaticBody3Dの地面があるシーンを作ります。Camera3DとDirectionalLight3Dも必要です。
　
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/09ff9067-ce57-cddf-ab05-62dd6c74cb12.png)

| ノード | 設定 |
|:-|:-|
| CharacterBody3D/MeshInstance3D  | 新規CapsuleMeshを設定  |
| CharacterBody3D/CollisionShape3D  | 新規CapsuleShape3Dを設定  |
| StaticBody3D | PositionのYを-1にします|
| StaticBody3D/MeshInstance3D  | 新規BoxMeshを設定してSizeのXとZを10mに変更。Materialに新規StandardMaterial3Dを設定して、AlbedoのColorを緑に変更  |
| StaticBody3D/CollisionShape3D  | 新規BoxShape3Dを設定して、SizeのXとZを10mに変更  |
| Camera3D  | Position (x,y,z)=(0m,5m,5m)に変更、RotationのXを-45°に設定  |
| DirectionalLight3D  | Light3D/Shadow/Enabledをオンに変更、RotationのXとYを-45°に変更|

　CharacterBody3Dを操作したいので、CharacterBody3Dにスクリプトをアタッチして、テンプレートはCharacterBody3D:Basic Movement」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/cb60104e-e650-5ef6-7b9e-ac4e009bffb7.png)

　実行するとこのように表示されます。カーソルキーで移動し、スペースキーでジャンプします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/a466554a-a745-2d00-fb3b-8dc5e5061567.png)

# Phantom Cameraを設定
　Camera3Dの子に「PhantomCameraHost」を追加することで、Phantom Cameraにカメラワークを任せたいCamera3Dを教えます。
　PhantomCamera3Dを追加し、追いかける対象と追いかける方法を指示します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/9aec474a-1dbd-ee27-af9e-2ef607924623.png)

:::note
　間違って、CharacterBody3Dの子にPhantomCamera3Dノードを設定すると、うまく動きませんでした。CharacterBody3の位置は気を付けましょう
:::

　PhantomCamera3Dのインスペクターを開き、Folloｗ Modeを「Simple」に設定します。「Simple」に設定すると、「Follow Target」と「Follow Parameters」を設定できるようになります。
　Follow Targetはカメラが追いかける対象なので、CharacterBody3Dを選択します。
　追いかける対象がカメラに映るようにしたいので、Follow ParametersのTarget OffsetのZを5mに設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/4a05d5a8-33bd-f316-9736-3a2f4cb6afc4.png)

 　実行して、CharacterBody3Dをカーソルキーで移動、スペースキーでジャンプさせると、カメラが追いかけるようになりました。
  ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/6ad010fc-9938-0f5c-3f35-8c81b92652b9.png)

# なめらかにプレイヤー（CharacterBody3D) を追いかけるようにする
　CharacterBody3Dとカメラの動きが一致していますが、カメラの動きを遅らせて、プレイヤーの動きを後から追いかけるようにします。
 　PhantomCamera3Dのインスペクターを開き、Follow ParametersのDampingをオンにします。Damping Valueの初期値が10ですが、この値を小さくするほど、カメラが追いかける動きが遅くなります。ここでは「2」に設定します。
  ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/9a818e19-4284-3cc9-4bdf-ec6fee7775a3.png)

　実行して、カーソルキーでプレイヤーを動かすと、カメラがいい感じに遅れて追いかけてきます。

# github

https://github.com/footinglow/Godot4/tree/main/03_study/SamplePhantomCamera

githubから取得後に下記の操作をすると実行できるようになります。

Godotにインポート
AssetLibからPhantom Cameraをダウンロード
プロジェクト設定のプラグインタブでPhantom Cameraを有効化する

 以上です