TPSプレイヤーキャラクターセットアップ

プレイヤーからの入力を取ってキャラクターを動かすようにするまでの手順メモ。

1. 入力マッピングを設定する

[Edit]>[Project Settings]>[input]から下のように設定する。

2. キャラクタークラスを作成

ブループリントを作成

Characterクラスを継承したブループリント「CH_CharacterBase」を作成する。
さらに「CH_CharacterBase」を継承したブループリント「CH_Player」を作成する。
また、PlyaerControllerを継承したブループリント「BP_PlayerController」も作成しておく。

カプセルの高さを調整

「CH_Player」の[CapsuleComponent]の高さを調整する。

メッシュアセットの割り当て

「CH_Player」の[Mesh]にスケルタルメッシュアセットをあり当てる
[Mesh]>[Transform]>[rotation]が緑の矢印と青の矢印が同じ向きを向くようにする。

3. カメラの設定

カメラの追加

「CH_Player」に[Spring Arm]を追加し、[Camera]をその子に追加する。

[Target Srm Length]などは適当な値を入れておく(実行時にはBP_PlayerCameraManagerで上書きされる)。

CameraManagerの作成

「BP_PlayerController」の [Class Defaults]>[Details]>[Player Controller]>[Player Camera Manager Class]の右の[+]ボタン から「BP_PlayerCameraManager」を作成する。
そして下の変数を作成する。

変数名 編集可 初期値
DesiredRotation Rotator チェック X:0.0, Y:10.0, Z:180
DesiredDistance Float チェック 900
DesiredFOV Float チェック 50
IsEnableControl Boolean チェック True
カメラ処理のオーバーライド

「BlueprintUpdateCamera」をオーバーライドした関数を作成し、下のようにBPを組む。
PlayerControllerの回転にも反映させるため、PlayerControllerに対して[Set Control Rotation]をしている。
(キャラクターの回転をカメラのYawと同期させるため)

PlayerControllerでCameraManagerをキャッシュする

「BP_PlayerController」に [BP_PlayerCameraManager型 (Object Reference)] の変数 [MyCameraManager] を作成し「Private」にチェックをいれ、CameraManagerのキャッシュを格納するBPを組む。

このキャッシュを外からもアクセスできるようにする。
新しい関数「GetPNPlayerCameraManager」を作成し、「Pure」にチェックを入れ、下のようにBPを組む。

カメラを回転させる

「BP_PlayerCameraManager」に新しい関数「AddYawInput」を作成する。

「BP_PlayerCameraManager」に新しい関数「AddPitchInput」を作成する。

「BP_PlayerCameraManager」のカメラの回転に角度制限を設定する。
[Class Defaults]>[PlyaerCameraManager]

「BP_PlayerController」から実行されるようにする。

4. プレイヤーの移動

カメラの向きを取得する関数を作成

「BP_PlyaerCameraManager」に新しい関数「GetCameraForwardVector」を作成。
「Pure」にチェックをいれる。

「BP_PlyaerCameraManager」に新しい関数「GetCameraRightVector」を作成。
「Pure」にチェックをいれる。

移動処理

「BP_PlayerController」に移動処理を書く。

歩行速度の初期値を設定

[Character Movement]>[Details]>[Character Movement: Walking]>[Max Walk Speed] を設定する。

5. キャラクターとカメラの回転の同期の設定

カメラのYaw回転をキャラクターにも反映させるための設定を行う。
「BP_Player」を開いて以下の設定を行う。

Class Default

[Class Default]>[Details]>[Pawn] の「Use Controller Rotation Yaw」にのみチェックを入れ、キャラクターのYawがPlayerControllerのYawに従うようにする。

Class Defaultの設定が優先されるため以下は不要だと思われるが一応。

SpringArm

[SpringArm]>[Details]>[CameraSettings] の項目をすべてチェックを入れておく。

** CharacterMovement
[Character Movement]>[Details]>[Character Movement (Rotation Settings)]>[Orient Rotation to Movement] のチェックを外し、移動方向に向かって回転しないようにする。

6. ゲームモードを設定する

[Game Mode Base]を継承したブループリント「XX_GameMode」を作成する。
「XX_GameMode」の [Class Defaults]>[Details]>[Classes] の「Player Controller Class」と「Default PawnClass」を設定する。

レベルエディタに戻り、メニューバーの[Window]>[World Settings]を選択し、レベルエディタにワールドセッティングパネルを追加する。
[World Settings]パネルの [Game Mode]>[GameMode Override]プロパティに[XX_GameMode]を割り当てる。

7. PlayerStartを設置

PlayerStartがまだレベルに配置されていない場合、PlayerStartを配置してプレイヤーキャラクターの初期位置を設定する。