環境
UE 4.10.0
Visual Studio 2015
概要
Unreal Engine 4 を触ってみて動作を確認する
入力周りの制御を確認してみる
本文
チュートリアルを確認
まずは、C++ プログラミングのチュートリアルの「プレイヤー入力と Pawn クラス」を
確認してみる。。。なるほど、これは、ちょっと分かりにくい。プログラミングのあまり
経験の無い人が見ると、なにこれ?となると思う。
分かる人に簡単に説明すると、入力キーのマッピングを決めて、イベントにコールバック
を設定し、イベント経由でキャラを制御する感じ。入力バッファさえ参照できれば後は、
適当にやれるんだが、なぜこんなに面倒なのかと思ったがブループリントの事を考えれば
確かにこうなっている方がインタフェースとしては適切なのかもしれない。
UE4 の入力管理の思想
UE4 では、入力はイベントで管理するようだ
エンジン側のコードをきちんと読んだわけではないが、おそらくメインループの最初(の方)
の処理( Tick が実行される前 )で、ハードウェアの入力 API からリードした値をエンジンが
保持し、その値を元にイベントをコールバックするはず。
こちらとしては、そのエンジンが保持している(であろう)入力バッファを直接参照したい
こんな感じで
// こちらは、擬似コードです
// 1P コントローラの左アナログスティックの X 値の参照
float var = Input::GetAxisLeftX( 0 );
入力を抽象化してくれるのはありがたいが、私の考えではそれはアプリケーションの役割だと
思う。イベントのコールバックだとコールバックのタイミングが重要になる。仮にコールバック
が Tick より後だとすると、入力が 1 フレーム遅延する事になるが、作るゲームの種類によっては
それは困る。また入力した値を、どの状態の時、どの順で、どうやって参照するか?はトータルで
考える必要がある。そういう意味でも入力はアプリケーション側が決定権を持つ方が使いやすい。
エンジン側のクラスなどを軽く調査してみたが、どうやら上記のように直接参照する方法が
なさそうなので、今度はエンジンのソースを見てアクセス可能かどうかを調査してみようと
思う。考察(2)に続く予定。