LoginSignup
2
2

More than 5 years have passed since last update.

UE4 で入力周り考察(1)

Last updated at Posted at 2015-12-27

環境

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)に続く予定。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2