「敵を全て倒すとクリア」「コインを全て取るとクリア」みたいなシステム。
今回は「敵を全て倒すとクリア」という形でやります。
アクターのBP_Enemyとそれを倒すシステムが既にあるという前提です。
Engineバージョンは5.3.2。
敵の残数を管理
ウィジェットBP: W_Score
親クラス: User Widget
名前: W_Score
・新規作成
グラフ
Enemies – Integer
・「インスタンス編集可能」と「スポーン時に公開」にチェックを入れる。
デザイナー
必要なのはText1つだけです。それ以外は好きなように作ってください。
とりあえずCanvas Panelを配置。
その下にVertical Boxを配置。
・アンカーを右上
・Vertical Boxを画面右上に配置。
Vertical Boxの中にHorizontal Boxを配置。
Horizontal Boxの中にVertical Boxを2つ配置。
・2つのVertical Boxは同じ階層
・それぞれスロット > Sizeをフィルにする
この2つのVertical Boxの中にそれぞれTextを入れる。
・左側のTextのコンテンツ > Textに「残数」
・右側のTextのコンテンツ > Textに「10」
フォントサイズ等は好きなように設定してください。
「10」と記入したTextのバインドをEnemiesにする。
変数Enemiesの値が表示されるようになるわけです。
Level: ThirdPersonMap
Levelを開いてください。
今回はサードパーソンテンプレートのThirdPersonMapを使っています。
画面上部の3つのノードみたいなアイコンから「レベルブループリントを開く」を選択。
LevelにBP_Enemyを3体配置しました。
この状態でテストプレイすると、右上に「残数 3」と表示されます。
キャラクターBP: BP_Enemy
【変数追加】
W_ScoreRef – W_Score
Level: ThirdPersonMap
クリアした時の処理
Enemiesが0になった時の処理。
ウィジェットBP: W_Win
親クラス: User Widget
名前: W_Win
・新規作成
今回は簡単に作成します。
とりあえずCanvas Panelを配置。
その下にTextを配置。
・アンカーを中央にしてTextを中央に配置
・Textのコンテンツ > Textに「Win」
今回は簡単に作成しましたが、このウィジェットブループリントにButtonを配置して「次のステージ」「リトライ」「終了」など選択できるようにすると良いでしょう。
Textの文字は「あの洞窟の敵を一掃してくれ」みたいなクエストの場合は「Win」ではなく「Quest Complete」など。
ウィジェットBP: W_Score
キャラクターBP: BP_Enemy
応用しやすい
今回はキャラクターBPのBP_Enemyを使用しましたが、コインであればアクターBPのBP_Coinを使って、同じように管理できます。コイン取得時にコイン数の変数を減らす。
W_ScoreとWinを1つにまとめる事も可能です。
W_Scoreの中央にTextで「Win」と書いておき、最初は非表示にしておく。変数化もしておく。
グラフで、Enemiesが0になった時の処理で「Win」を表示する。
ステージのクリア条件やクエストのクリア条件など、使いやすいシステムです。
コメント