PawnとPlayer ControllerによるActor移動
UE4でのプレーヤー操作の基本
前回のGameModeでも少し紹介しましたが、UE4ではプレーヤーが操作するオブジェクトをPawn(駒)と考え、それをコントロールするものとしてPlayer Controllerというものが存在します。
Player ControllerはPawnを所持するといような作りになっており、Pawnの所持を破棄するとPawnに対する操作は行えなくなります。
また、GameModeにPawnとPlayer Controllerを設定する事により、ゲーム開始時にPlayer ControllerはPawnを所持している状態になります。
今回はこのPawnとPlayer Controllerを作成して、Actorを動かしてみたいと思います。
PawnとPlayer Controllerの作成
ではまずPawnとPlayer Controllerを作成します。
Conent Browser内のAdd Newもしくは右クリックのBlueprintを選択して親クラスをそれぞれ選択します。
Content Browserは下のようなアイコンが二つ出来ています。
PawnクラスをMyPawn_BPとPlayer ControllerクラスをMyPlayerControlller_BPという名前にしました。
また、BlueprintsフォルダとMapsフォルダというフォルダがありますが、
事前に右クリックNew folderで作成しました。
BlueprintsにBlueprint、Mapsにテスト用レベルを保存しています。
既に作ってしまったものを移動させたい場合は移動先フォルダにドラッグ&ドロップしてください。
コピーでよければCopy Here、移動でよければMove Hereを選択してください。
Pawn実装
MyPawn_BPを開き、Viewportに切り替えたら、Cube Componentを追加します。
作成して出来たCubeが少し大きいので、Detailタブ内のScaleをそれぞれ0.5ぐらいにします。
次にSpring ArmというComponentを追加します。
Componentリストから探すのは面倒なので、Spring Armと検索して選択します。
すると、下の画像のようにCubeから棒状のものが突き刺さった様な状態になります。
このSpring Armは文字通りバネのようなものを表現するのに適しています。
今回はこのSpring Armの子供としてCamera Componentを追加する事でCubeに追従するカメラを作ります。
次にCamera Component を追加します。
CameraをSpring Armの子供にしたいので、CameraをSpring Armにドラッグ&ドロップします。
追加すると、下のようなViewになったはずです。
このままではCameraの位置と角度が正面を向いた状態ので、少し遠めから俯瞰した状態にします。
Spring Arm のDetailsタブ内のCamera Settings > Target Arm Lengthを500ぐらいにします。
次にカメラの高さと角度を変更します。
Camera Detailsタブ内のTransformを次の値にします。
Location Z = 200、Rotation Y = -20
するとViewは下のようカメラが俯瞰するようになったはずです。
入力によるPawn移動
次に入力からPawnを移動させたいと思います。
以前紹介したInput設定では、レベルブループリントからActorを移動させましたが、それはPawnを継承していないクラスでは、入力処理を扱えないからです。
今回はPawnのEvent Graphに直接入力処理を作成して行きます。
また、入力マッピングについては以前紹介したのでそちらを参考にしてください。
入力イベントはMoveForwardとMoveRightを使用します。
まず、移動量を求めます。
Axis ValueとGet World Delta Secondsをかける事で、前回処理からの経過時間分のスケールを求めます。
Add pinをクリックすると入力ピンが増えるので、ここに移動量を入力します。
今回は移動量を500にします。
次に移動方向を求めます。
今回は平面での移動だけを想定しているので、Get Control RotationからBreak RotatorでY角度のみを抽出し、Make Rotatorで移動角度を作成します。
また、スカラー値でない出力ピンはピンを右クリックし、Split Struct Pinを選択する事で出力される構造体が分解されて表示されます。
今回はピン数もそれ程多くないのでこの状態で作成して行きます。
次にRotatorから前方ベクトルを取得します。
これで移動方向が求められたので、先に作った移動量と掛け合わせます。
最後にAdd Actor Local Offsetの実行ピンとDelta Locationに求めたベクトルを繋げます。
これでMoveForwardは完成です。
MoveRightはGet Forward Vectorの部分をGet Right Vectorに置き換えます。
GameModeにPawnとPlayer Controllerを設定する
最後に前回紹介したWorld Settingsに作成したPawnとPlayer Controllerを指定する事により、プレーヤーが操作するPawnが変更されます。
前回のMyGameModeを使用してWorld Settingsを変更したのが下のものです。
では、実行してみると・・・
静止画ですみません。。。
Cubeが宙に浮いていますが、W、S、D、Aで移動出来ました。
今回はPawnとPlayer Controllerを作成してPawnを移動させるまでを紹介しました。
次回はFBXのインポートについて紹介したいと思います。