ゲーム画面にこのように制限時間を表示したいと思っているのですが、どのようにBruePrintを用いれば良いのか分かりません。ご教授お願いします。
プログレスバーで表示ができたのですが、時間の減少を表現できません。
BluePrintでTimerの扱い方がうまくできません。
Timer系のノードにはTimerHandleがReturnで帰ってきますそこからGet Timer Elapsed by HandleやGet Timer Remaining by Handleのというノードを使えば残り時間や経過時間を取得できます。それをプログレスバーにバインドすればいいと思います
BluePrintを新たに作成してコメントに合った画像のものを作成し、
レベルプリントで![alt text][1]を作成しました(Timeは作成したBluePrintです)
次に
https://docs.unrealengine.com/latest/JPN/Engine/UMG/QuickStart/1/index.html
を参考に変数を作成しようと考えたのですが、初めに空のプロジェクトを作成したため「FirstPersonCharacter ブループリント」がありません。この場合
https://docs.unrealengine.com/latest/JPN/Engine/UMG/QuickStart/2/index.html
このページのCastに当たる部分には何を与えてあげれば良いのか分かりません。
PawnまたはCharacterの作成、AnimationBPの作成、GameModeの作成が必要です
なつのやさんの『サードパーソン ブループリント ゲーム入門』で一通りの解説がされていますので参考にしてみてください
又は必要な物を別のプロジェクトから移行してくる方法もあります。こちらの方が楽そうに見えますが混乱することが多いかもしれません
適切に作成できていたら作ったCharacterがCast出来ると思います
慣れないうちはテンプレートを元に作りなおすのも手です
Characterの作成後、Charcterの中身は
このようにして、
次に新しく作ったブループリント内(MyUI)で
のように作成しました。
この後、どのようにして時間を作成したノードと組み合わせるのか分からないためご教授お願いします。
プログレスバーを配置して選択、Percentという項目があるのでその隣のバインドを選択して作られた関数のReturnValueに残り時間を入れます。
GetTimerRemainingTimeByHandleのReturnValue÷LimitTimeの値を変数として保存しておいてそれを入れると良いと思います。LimitTimeで割る理由は0~1の値にするためです。
バインドに関してはドキュメントのここでも取り上げられていますね
https://docs.unrealengine.com/latest/JPN/Engine/UMG/QuickStart/2/index.html
GetTimerRemainingTimebyHandleのHandleに接続してないからだと思います。Handleを渡さないとどのタイマーの残り時間を出すのか判別出来ないかと。
ドキュメントのように、myCharacterをHandleに接続するのかと思っていましたが、違いました。
エラーメッセージとして、構造体と互換性が無いとでました。
Handleに渡すのはSetTimerByEventのReturnValueで帰ってくる値です。それをどこかに一度保存するなりして渡してあげて下さい。
SetTimerByEventの実行ピンが繋がれていないのでタイマーが発行されていないように見えます。
タイマーを利用したい箇所と繋いでみてください。
begin playのタイミングで利用したいと思っていたのですが、検索がヒットしませんでしたBluePrintのウィジェットでは出ないのですか?
それともSetTimerByEventには繋げることができないのでしょうか?
EventConstructを使いたいのですが、
https://docs.unrealengine.com/latest/JPN/Engine/UMG/QuickStart/2/index.html
このドキュメントで参考にした際に使用しているため、新しく作成しようと試みましたが既存のノードのところに飛ぶだけで出来ませんでした。
また、同じウィジェットプリント内に新規イベントグラフを作成しEventConstructを作成しようと試みましたが出来ませんでした。
UMGの場合はEventConstructを使って下さい
MyCharaの後に繋げば大丈夫です
Play後に時間を確認できました。しかし、時間の進み具合?がおかしいです。LimitTimeのデフォルト値は60にしているのですが
0に近づくに連れてタイムが遅くなります。
また、プログレスバーも変化しませんでした。