ボタン操作:上昇下降
※素人による記事の為、間違いがある可能性があります
※個人用備忘録ですが、何かご指摘ございましたらコメント頂けたらと思います
やりたいこと
無重力下でジェットパック背負ってるみたいに
プレイヤーを上昇下降させたい
エンジンバージョン 5.1.1
参考
プロジェクト作成
ThirdPersonテンプレートを新規作成
今回はプロジェクト名を「test」としました
キー入力設定
UE 5.1 から Enhanced Imput というのが正式採用されたので
入力設定はプロジェクト設定では無く、アクターとして作成していきます。
まず、入力を bool値 float1D vector2D なのか定義したアクターを作成します。
All > ThirdPerson > Imput > Actions フォルダに
右クリックで Imput > Imput Action を新規作成
IA_Fly とリネーム
IA_Fly を開き、ValueType を Axis1D にする。
(上昇下降は高いか低いかの1次元なので)
入力に対して、キーボードのどのキー、パッドのどのボタンか、設定している IMC_default を開きます。
下記の様に設定します
⓷は「Q」 ⓸は「E」
⑨は Negate で、反対になるのでマイナスになる(Eキーは下降なので
※Swizzle Imput Axis Values は使わない
デフォルトの移動処理で使っているのですが、それはあくまで2軸必要だからであって1軸の場合は必要ないです。
これは何か?というと
「キーボードやパッドから入力される値」を XYZ → YZX のように別の軸に変換する設定です。
WASDキーで見てみると
Wキーでは X=1 Y=無し Z=無し という値を取れます。
それをYZX に変換するので Y=1 X=無し Z=無し となります。
この値はEnhancedImput Actionノードで赤枠から出力されます
つまりデフォルトだとキーボード入力が全て X の値になってしまう為、ノードからYとZは引っ張ってこれないので、このように軸変換しているのです。
プレイヤーBPに上昇下降処理を書き込む
プレイヤーBPを開く
下の画像の様にノードを組みます。
A IA_Flyからの入力
B Flying モードに設定します(これしないと飛ばない)
C Pawn を WorldDirection で定めた方向にScalarValue分動かします
D キャラの回転を取得
E 与えられた回転値から上方向のベクトルを返す
デフォルトの移動処理の解説
上で組んだ処理とは、デフォルトの移動処理は違っています。
AとC Get Controll Rotation、キャラでは無くカメラの回転を取得
B 与えられた回転から右方向ベクトルを返す
D 与えられた回転から前方向ベクトルを返す
なぜ Get Controll Rotation を使っているのか?
キャラでは無く、画面から見た方向に動いて欲しいからです
上昇下降処理では画面では無くキャラ基準なので使ってません。
なぜ、Pitchは繋いでないのか?
カメラが煽り俯瞰になった時に前方が傾くから、繋ぐ必要が無い
なぜRollは繋いだり繋がなかったりしているのか?
わからない、基本繋ぐ必要はない。Yawだけで十分
詳しい解説はこちら
ベクトルの方向知りたい時
ベクトルを扱ってると、どの方向を取得してるのか知りたくなります。
その時は下記記事のやり方でいけます。
因みに、上の記事内ではプレイヤーの位置にオフセットしていますが、Add Movement Imput の WorldDirection では、単純に方向だけ知れればいいのでオフセットはしなくて良い(当たり前体操)
足滑りを軽減と Can Fly
右赤枠に数値を入れると飛行時に滑るのが軽減されます。
CanFlyはオンじゃなくても飛べますが、一応オンにしてた方が良さそうな気がするのでオンにしてます(よくわからない)
テストプレイして完了
この記事が気に入ったらサポートをしてみませんか?