プレイヤーからの入力を取ってキャラクターを動かすようにするまでの手順メモ。
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を配置してプレイヤーキャラクターの初期位置を設定する。