インプット設定に関して、以下2点質問です。
[1つ目]
同じキーで複数の操作をしたい場合(例えば、NPCと話す or 武器を振るの2つ)、
インプットのマッピングを1つにしてブランチ等で処理を分ける or マッピングを複数にして各々の処理を定義のどちらか(又はそれ以外の方法)で
実装することが多いのでしょうか。
[2つ目]
軸マッピングをBP上で定義した時の戻り値(Axis Value)に関して、
1フレーム毎に、インプット設定で指定したキーの入力が検出された時、
Scaleで設定した値 = Axis Valueとして出力される理解で合っていますでしょうか。
(60fpsで1秒間、キーを押しっぱなしにしたらAxis Valueの累計 = 60 * Scaleの値)
1つ目
ー>マッピングを複数にして各々の処理を定義を使います。
同じキーに複数の入力処理関数を追加します。(例えばEキーでNPCと話す、武器を使う)
しかし同時に複数の行動を処理することは良くないですね。(例えば自分はNPCと話したいと思ってEキーを使ったけど武器が振られてNPCが死んだら不味い。。。)
場合によってNPCに近くにいればNPCと話す処理に入って、周りにNPCがなければ武器を振るような状況によって処理を分ける必要がありますね。
2つ目
ー>ちょっと質問の意図が分からないです。
60fpsで1秒間、キーを押しっぱなしにしたら入力関数が60回呼ばれることは合ってます。
2つ目ですが、意図としては、
キー入力が検出されるタイミングと、検出された時どんな値が出力されるのかの確認でした。
(キャラクターの移動操作のテスト時に、移動距離はどのように算出されているのかが気になったため)
関連内容は
https://www.unrealengine.com/ja/blog/input-action-and-axis-mappings-in-ue4
こっちのドキュメントに書いてます。
英語で書かれてます。
「An Axis’ value is the sum of the values of each key’s state in that frame. So in the MoveForward case pictured above, if you have only W held down the Axis’ value is 1, but if you had both W and S held down then the Axis’ value would be 0. It should also be noted that if you had both W and Up pressed then the value is 2, so you would likely want to clamp the value in the bound function.」
翻訳機を使ってみると
「Axis の値は、そのフレーム内の各キーの状態の値の合計です。 したがって、上図の MoveForward の場合、Axis の値は 1 ですが、W と S の両方を押した場合、Axis の値は 0 になります。 また、W と Up の両方を押した場合、値は 2 になるため、bound 関数で値をクランプする必要があることに注意してください。」
となりますね。
Axisの値はキーの入力状況を判断するための0とか1とかの値が入ってくる感じですね。
追加の情報ありがとうございます。
Axisの値に関しても理解することができました。
MoveForwardの割り当てで実際試してみたところ、全部のキーを押した場合は合計値になることを確認できました。