Actorがキーボード入力を取得出来るようにするのってちょっとめんどくさく、以下のようにやっても入力は受け付けられないのです。
inputKeyはレベルブループリント又はデフォルトのキャラクターでしか取得出来ません。
@Bussan_desu これですが、プレイヤーとは無関係のアクターでも"Auto Receive Input"で"Player 0"とか指定すればそのPlayer Conrollerの入力がとれます。 pic.twitter.com/7ybf8QPKS3
— alwei@冬コミ3日目東ユ18b (@aizen76) 2015, 11月 18
知りませんでした!!!情報ありがとうございました!!!
てことで、以下の内容は見なくてもいいですが折角書いたのでこういうのもあるよ~的な感じで見てください!何かに使えると思います!
もちろんいろいろな解決方法があって、入力したいアクターをキャラクターにして入力する際にDefaltPawnが変わるようにしたり
Playerからイベントディスパッチャーを用いたりする方法があります。ただ、これらちょっとめんどくさいので簡単な方法を。
実装!!
仕様:アクターの近くで"2"を入力するとHelloと表示される。
Actorを作成して以下のようにノードを組みます。
GetPlayerControllerからGetInputAnalogKeyStateノードを出します。
このノードは入力されている時は1、それ以外は0を出力するようになっています。Keyを指定してReturnValueからEqualノードで1を入力します。
このままPrintStringに接続するのもいいのですが、今回は一度押したら一回Printstringを実行するようにしているためDoonceノードをかましています。
これでレベル上にActorを設置して指定したKeyを押すと
PrintStringのイベントが動いているのがわかると思います。(左上だ!)
ですが、これだとレベルのどこにいてもKey入力を受け付けてしまうので、
Boxを設置して以下のようにBoolean型を変数を宣言してブランチをすれば
PrintStringのイベントが動きます。(左上だ!)
コードを見る(コピペしてエディターに貼ることが出来ます。)
ActionMappingsを用いて入力する場合は他の方法を使わないと行けません。
なので作成時のデバッグに使うのが一番いいのではないかなと思います。
追記
複数同時入力は可能です。以下のようにAndノードでブランチすればいけます。
以上