ゲーム開発備忘録

ゲームプログラマー UE4・5向けの記事を書いておりますので見ていただけるとありがたいです。

【UE4・UE5】Unity勢&入門者向け!ゼロからキャラクターを動かしてみる。~②キー入力とカメラと移動編~

はじめに

~①ブループリントの作成とコンポーネントの追加編~の続きです。

まだ読んでいない方はそちらを先にご覧ください。

namiton.hatenablog.jp

 

今回はキー入力に応じた移動やカメラ操作をやっていきます。

ぜひ挑戦してみてくださいね。

やりかた

 

①キー入力のバインディング

 

前回の入門向けシリーズ記事

namiton.hatenablog.jp

このシリーズではキー入力をイベントグラフ上で指定して行っていましたが、

デバック目的以外ではこの手法をとることは推奨されません。

理由として、複数の入力手段(キーボード・パッド・アケコンなど)

を用意した場合この手のノードを個別に用意必要があり非常に大変です。

f:id:namiton:20220214160203p:plain

そのため入力をイベントとして出力できる

バインディングという機能を使って効率的に実装していきたいと思います。

 

編集→プロジェクト設定から

f:id:namiton:20220214160727p:plain

 

エンジン→インプットと選択します。

f:id:namiton:20220214160806p:plain

 

ここにアクションごとの入力をマッピングしていきます。

画像のように対応したマッピングを行ってください。

f:id:namiton:20220214161246p:plain


②キャラクターの移動

次にBP_CubeCharacterを開きます。

イベントグラフにマッピングした移動イベントを作成します。

f:id:namiton:20220214161634p:plain

試しにログを出力するノードをつなぐと

f:id:namiton:20220214161819p:plain

毎フレーム入力した値が返ってきます。

f:id:namiton:20220214161847p:plain

 

以下のようにノードを組みます。

イベントAddMovementInputを使用することでキャラクターを移動させることができます。コントローラの水平回転から前後左右のベクトルを取得しています。

f:id:namiton:20220214182008p:plain



コンパイル!!

f:id:namiton:20220210125734p:plain

実行してみましょう。

f:id:namiton:20220210134532p:plain

方向キーまたはWASDで移動できることを確認します。

f:id:namiton:20220214163137p:plain

 

分かりやすいようにコメントで囲っておきます。(範囲選択後にショートカットC)

f:id:namiton:20220214181950p:plain



 

②カメラの操作

イベントグラフに戻りマッピングしたイベントを追加しましょう。

f:id:namiton:20220214163542p:plain

AddControllerPitch/Yaw Inputイベントを作成します。

f:id:namiton:20220214164007p:plain

 

次にSprintArmコンポーネントの詳細にある、

UsePawnControlRotationにチェックを入れます。

f:id:namiton:20220214164108p:plain

 

これで準備完了です。

実際にプレイしてカメラが操作と移動ができることを確認しましょう。

f:id:namiton:20220214164231p:plain

 

③移動方法の変更

現在カメラの方向に向かってキャラクターが回転していますが

カメラとキャラクターの回転が非移動時に同期しないようにします。

 

キャラクタームーブメントコンポーネント

Orient Rotation to Movementにチェックを入れます。

f:id:namiton:20220214165512p:plain

 

クラスのデフォルトまたはコンポーネントウィンドウのBP_CubeCharacter(Self)を押します。

UseControllerRotation Yawのチェックを外します。

f:id:namiton:20220214165735p:plain

 

実行してみましょう。

キャラクターとカメラの回転同期が外れ、

移動と同時に回転が同期するようになりました。

f:id:namiton:20220214165848p:plain

 

④移動速度を変えてみる

CharacterMovementコンポーネントを選択すると

MaxWalkSpeedという項目があります。

値を変更してみましょう。

移動速度が変更されているはずです。

f:id:namiton:20220214183427p:plain

 

⑤位置をリセットしてみよう。

BeginPlayイベントを作成します。

変数DefultTransformをTransfrom型で作成し以下のようにつなぎます。

これでゲームが始まった時のプレイヤーの位置をワールド座標で記録しました。

f:id:namiton:20220214183820p:plain

 

バインディングで作成したイベントを用意します。

SetActorTransformを使うことでアクターの位置をワールド座標で指定します。

f:id:namiton:20220214184042p:plain

実行してみましょう。

Fキーを押すごとに初期位置に戻れるようになっていたら成功です。

 

次回はジャンプとマテリアル編を解説します。

 

さいごに

UE4やUE5向けの記事を書いています。

皆様の応援が投稿のモチベーションになりますので

コメントやTwitterのフォローなどしていただけるとありがたいです。

それではよきゲーム開発を。