スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

UE4ゲーム制作入門二十三日

一人UE4ゲーム制作入門アドベントカレンダー二十三日目です。

今日は攻撃力やらHPを反映させました。今まではデバッグ用に攻撃力は絶対に倒せる値でやっていたので。あと、多少ゲーム性を持たせるために制限時間を実装しました。

まずPlayerのメインUIを作ります。UserInterfaceからWG_Mainの名前で新しくウィジェットを作成します。
見た目はこんな感じです。左下のプログレスバーをTransformのAngleで-90度回して縦向きにしました。あと回転の中心点のPivotをいじっています。
右上のは制限時間です。
WG_Mainのデザイナ

まず、ST_StatusにHP_MaxとAttackを追加します。HP_MaxはPlayerのHPバー用とステータスを持ってるアクターのHP初期化用に使います。

EnemyとPlayerのBeginPlayにステータスを初期化する処理を加えます。同じ処理なのでEnemyのスクショだけですが、これもマクロライブラリーにまとめたほうがよさそうですね。
HPの初期化

HPのダメージ処理部分も構造体に要素が増えたため修正を行います。HP_MaxやAttackの値をきちんと引き継ぐようにしました。
CalcDamage.png

PlayerとEnemyなどのAddDamageのDamage部分にST_Statusの攻撃力を与えるようにして、ダメージ処理関係は一通り完成です。

制限時間のほうに移ります。こちらはゲームインスタンスに制限時間をもたせ、計算できるようにしました。
GameInstance.png

BP_GameModeでこれを呼ぶ関数を実装しています。時間切れだったらResult画面へ移行するようになっています。
CalcLimitTime.png

この関数は実際にはウィジェットのTickEventで呼ばれています。戻り値はWG_Mainの変数であるLimitTimeに設定するようにしています。
WG_Mainのイベントグラフ

制限時間ですが、00:00というフォーマットで表示するために多少手間をかけています。他にやりようが思いつかないので、知っている人は教えていただけると助かります。

まず、デザイナで作った制限時間用のテキストウィジェットに設定する関数です。これはテキストウィジェットの詳細パネルのTextからバインドする関数を作成することで宣言できます。別にこちらのイベントグラフで作ってデザイナの方でバインドしても問題ありません。
getLimitTimeText.png

分と秒に分けるマクロはそれぞれこんな感じです。floatには100秒とかそういう値で入っているため、分に直さなければなりません。
getSecond.png
GetMinute.png

こちらで実際その値を、想定しているフォーマットに変換しています。実際の値が10未満なら数字は一桁部分にしか存在しないことになるため、その数字の前に0を付け足すようにしています。
checkDigit.png

HPの方は単純明快にプレイヤーから取ってきて、パーセントに変換してプログレスバーに反映しています。
getHealth.png
HealthPercent.png

実際の画面はこんな感じになります。

gamenn.png


スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

shiratori00

Author:shiratori00
フリーでソフトウェア開発者してます

最新記事
最新コメント
月別アーカイブ
カテゴリ
Twitter on FC2
カウンター
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。