一定時間操作がない場合にスクリーンセーバーのように組んだシーンレベルを動かすといったものを考えています。 一定時間キー入力がない場合や、HMD等からの入力値の変化がない場合のイベント発生を発生するような機能ノードはありますか?
たぶんそのようなノードはないかもしれません。
ですが、いくつかの処理を組み合わせて作れると思いますよ。
まずいくつか機能を分解して説明します。
1.操作入力を監視
2.最後に入力を行った時間から一定時間監視を行う
3.レベル切り替え(サブレベルもしくはオープンレベル)
①についてですがPlayerControlBPを作りそこで「get input ◯◯」で監視を行います、入力が行われたらフラグを立てます。
②Tickイベント等でフラグを監視してフラグがONになったらタイムラインなどでで指定時間入力があるかを監視します。
監視中に入力があった場合は再度タイムラインを最初から再生してあげれば良いです。
③タイムライン終了時に「openLevel」もしくは「Load Stream Level」でサブレベルを呼ぶと良いと思います。
単純にスクリーンセーバーを作りたいのであればUMGやHUDを使ってアニメーションを組むのも一つの手ですよ。
スクリーンセーバーを出すためだけにLevel移動をする必要は無いかもしれません。
それから、他にも良い手はあると思いますがサンプル貼っておきますね。
今回はひとつにまとめるためにこのような実装にしましたが、キャラクターBPでボタンを押した時と離した時でフラグのONOFFとかでもいいかもしれません。
ありがとうございます。
なるほど、やはりそういったノードはありませんか。
サンプルありがとうございます、こちらをもとに試行してみます。
キー入力の監視は、入力の可能性のある各キーそれぞれ準備する必要があると考えればいいでしょうか。
なるほど、ここでのグループ設定名が引用できるのですね。
各キー入力を「AND」ノードで条件設定する方法を考えていましたが、
こちらの方が簡単ですね、すごく初歩的なことで、すみません。勉強になります。
うまくいかなかったので、BP自体組み直ししたので、
再度あとで試行してみますが、おおよそ下記の流れです。
FirstPersonのデフォルトシーンを使って、
新規でプレイヤーコントローラーBPにアクションマッピングのキーイベントを設けたところ、
たとえば、移動のwsadのMoveForward等や、Jump等、その名前を利用したイベントを使うと、
キャラクタ本体の動きができなくなるようでしたので、
入力イベントとしてどちらかに引っ張られるのかなとも思ったのですが、、、。
そういうことですね、それは実装の問題なだけです。
PlayerControllerはキャラクタBPより上位のレイヤーに位置する存在のためそのような挙動をするのだと思いますよ。
この場合キャラクターBPにキー監視のアクションマッピングを実装してあげれば良いだけかと。




