#UE4でカメラをキャラクターから独立させる手順
##目的
プレイヤーキャラクターからのカメラの分離
##理由
ThirdPersonのサンプルを見る限り、キャラクターにカメラが紐づけられていますが、キャラクターに紐づけられることで下記のデメリットが存在します。
・キャラクターのブループリントをほかのキャラクターにも適用しづらい。
・キャラクター側でカメラをすべて制御するのは煩雑。
・注視点が必ずアクターの位置からのオフセットとなり、注視点や位置が細かく制御しずらい。
・実際のゲームコードでもカメラクラスを別で用意してカメラ自身が動きを制御するのが一般的
以上の理由から、カメラやキャラクターをもっと自由に制御するためにカメラ自体をキャラクターから分離してしまいましょう。
##テスト環境
UnrealEngine 4.15.2
2.ThirdParsonCharactorのブループリントからCameraBoomとFollowCameraを削除しましょう。
↓
3.コンテンツの新規作成から新しくActorのBluePrintを作成しましょう。
4.作成したActorにArrowコンポーネントを追加した後、SpringArmコンポーネントとCameraコンポーネントが階層になるように追加しましょう。
5.イベントBeginPlayからSetViewTarget with Blend関数を設定します。
このとき、ターゲットにGetPlayerControllerから習得したValueを、NewViewTargetにselfを入れておきましょう。
また、同時にイベントTickで位置が更新されるようにSetActorLocationとSetActorRoatationをそれぞれ、GetPlayerPawnから取得したGetActorLocationとGetControllRotationセットします。
※ここでCameraActorのLocationに任意の位置を設定すると、その位置が注視点になります。例えば、GetSocketLocationで頭の位置を取得して設定すると注視点を頭にすることができます。
6.さてそうして作成したCameraアクターをドラッグ&ドロップで適当なところに配置して、一度Playしてみたところ、カメラがキャラクターに埋まってしまいました。
7.これはSpringArmがCameraの当たりをチェックして引き寄せているため埋まっている状態になっています。
解決するためにはキャラクターがカメラとぶつからないようにしてあげる必要がありますので、再度、ThirdPersonCaracotrのブループリントを開いて、CapselComponentとMeshのCollisionをCustomに変更して、Cameraに対するあたりをブロックからOverrideか無視するように設定を変更しましょう。
8.無事、キャラクターにくっつく別アクターのカメラが完成しました。
##パッケージ
(HPバーの記事のパッケージも上記内容は内包されていますので、それと同じものです)
https://drive.google.com/file/d/11y-q7ZpAjGJn81LXv8Q-7Qbydto4ASUB/view?usp=sharing