はじめに
~①ブループリントの作成とコンポーネントの追加編~の続きです。
まだ読んでいない方はそちらを先にご覧ください。
今回はキー入力に応じた移動やカメラ操作をやっていきます。
ぜひ挑戦してみてくださいね。
やりかた
①キー入力のバインディング
前回の入門向けシリーズ記事
このシリーズではキー入力をイベントグラフ上で指定して行っていましたが、
デバック目的以外ではこの手法をとることは推奨されません。
理由として、複数の入力手段(キーボード・パッド・アケコンなど)
を用意した場合この手のノードを個別に用意必要があり非常に大変です。
そのため入力をイベントとして出力できる
バインディングという機能を使って効率的に実装していきたいと思います。
編集→プロジェクト設定から
エンジン→インプットと選択します。
ここにアクションごとの入力をマッピングしていきます。
画像のように対応したマッピングを行ってください。
②キャラクターの移動
次にBP_CubeCharacterを開きます。
イベントグラフにマッピングした移動イベントを作成します。
試しにログを出力するノードをつなぐと
毎フレーム入力した値が返ってきます。
以下のようにノードを組みます。
イベントAddMovementInputを使用することでキャラクターを移動させることができます。コントローラの水平回転から前後左右のベクトルを取得しています。
コンパイル!!
実行してみましょう。
方向キーまたはWASDで移動できることを確認します。
分かりやすいようにコメントで囲っておきます。(範囲選択後にショートカットC)
②カメラの操作
イベントグラフに戻りマッピングしたイベントを追加しましょう。
AddControllerPitch/Yaw Inputイベントを作成します。
次にSprintArmコンポーネントの詳細にある、
UsePawnControlRotationにチェックを入れます。
これで準備完了です。
実際にプレイしてカメラが操作と移動ができることを確認しましょう。
③移動方法の変更
現在カメラの方向に向かってキャラクターが回転していますが
カメラとキャラクターの回転が非移動時に同期しないようにします。
Orient Rotation to Movementにチェックを入れます。
クラスのデフォルトまたはコンポーネントウィンドウのBP_CubeCharacter(Self)を押します。
UseControllerRotation Yawのチェックを外します。
実行してみましょう。
キャラクターとカメラの回転同期が外れ、
移動と同時に回転が同期するようになりました。
④移動速度を変えてみる
CharacterMovementコンポーネントを選択すると
MaxWalkSpeedという項目があります。
値を変更してみましょう。
移動速度が変更されているはずです。
⑤位置をリセットしてみよう。
BeginPlayイベントを作成します。
変数DefultTransformをTransfrom型で作成し以下のようにつなぎます。
これでゲームが始まった時のプレイヤーの位置をワールド座標で記録しました。
バインディングで作成したイベントを用意します。
SetActorTransformを使うことでアクターの位置をワールド座標で指定します。
実行してみましょう。
Fキーを押すごとに初期位置に戻れるようになっていたら成功です。
次回はジャンプとマテリアル編を解説します。
さいごに
UE4やUE5向けの記事を書いています。
皆様の応援が投稿のモチベーションになりますので
コメントやTwitterのフォローなどしていただけるとありがたいです。
それではよきゲーム開発を。