僕の私のUnrealな日々

UE4のBluePrintを使って小さなギミックを作ったりしてます。ブログを通じて情報共有ができたらなと思います。

UE4:プレイヤーのKey入力を取得するActorの簡易的な実装

 Actorがキーボード入力を取得出来るようにするのってちょっとめんどくさく、以下のようにやっても入力は受け付けられないのです。

f:id:Bussan_dayo:20151118070132p:plain

inputKeyはレベルブループリント又はデフォルトのキャラクターでしか取得出来ません。

 

 

知りませんでした!!!情報ありがとうございました!!! 

 

てことで、以下の内容は見なくてもいいですが折角書いたのでこういうのもあるよ~的な感じで見てください!何かに使えると思います!

 

 

 

 もちろんいろいろな解決方法があって、入力したいアクターをキャラクターにして入力する際にDefaltPawnが変わるようにしたり

Playerからイベントディスパッチャーを用いたりする方法があります。ただ、これらちょっとめんどくさいので簡単な方法を。

 

実装!!

仕様:アクターの近くで"2"を入力するとHelloと表示される。

Actorを作成して以下のようにノードを組みます。

f:id:Bussan_dayo:20151118071516p:plain

 

GetPlayerControllerからGetInputAnalogKeyStateノードを出します。

このノードは入力されている時は1、それ以外は0を出力するようになっています。Keyを指定してReturnValueからEqualノードで1を入力します。

 

このままPrintStringに接続するのもいいのですが、今回は一度押したら一回Printstringを実行するようにしているためDoonceノードをかましています。

 

これでレベル上にActorを設置して指定したKeyを押すと

f:id:Bussan_dayo:20151118072626p:plain

 

PrintStringのイベントが動いているのがわかると思います。(左上だ!)

 

ですが、これだとレベルのどこにいてもKey入力を受け付けてしまうので、

f:id:Bussan_dayo:20151118073023p:plain

 

Boxを設置して以下のようにBoolean型を変数を宣言してブランチをすれば

f:id:Bussan_dayo:20151118073330p:plain

 

 

f:id:Bussan_dayo:20151118073407p:plain

PrintStringのイベントが動きます。(左上だ!)

 

 

 

ページはこちら

 

コードを見る(コピペしてエディターに貼ることが出来ます。)

 

ActionMappingsを用いて入力する場合は他の方法を使わないと行けません。

なので作成時のデバッグに使うのが一番いいのではないかなと思います。

 

追記

複数同時入力は可能です。以下のようにAndノードでブランチすればいけます。

f:id:Bussan_dayo:20151118082333p:plain

 

 

以上