YOUTUBEのHOWTO動画を参考にオリジナルのカードバトルをUNITYで製作するシリーズ第9回。
前回はプレイヤー本体およびエネミー本体への攻撃処理を実装しました。今回もひきつづき参考動画をもとにゲーム製作を進めていきます。
1.Result画面の表示
ゲームのルールとしてはプレイヤーまたはエネミーそれぞれの本体HPが0以下になった場合にはゲーム終了となります。ここではゲーム終了時にパネル表示してゲーム終了をユーザーに明示的に表示する機能を追加します。
1)実施内容
・Canvas上にあらたにResultPanelのパネルUIを追加。追加したパネル上にTextとButtonを配置
・「GameManager」クラスに「CheckHeroHp」メソッドを新規追加。同メソッドにプレイヤまたはエネミーのHPが0以下になった際には新規追加したパネルを表示する処理を実装
・新規追加したメソッドを「AttackTohero」メソッドの最後でCallする(本体攻撃処理の最後に終了判定)
2)終了時点の状態
もともとプレイヤーおよびエネミーのHPを30にしていましたが、本機能を確認するためにHPを1に設定して実行。本体攻撃によりHPが0以下になったため終了画面が表示されるようになりました。
2.コストの簡易実装
カードゲームでは「コスト」の概念があったりします。サンプルでも同様にコストの概念があります。コスト値の表示とコストに応じたカードのみ手札から場に出せるような処理を実装します。
1)実施内容
・「GameManager」クラスにHP同様にCOSTの定義および表示処理を追加
・「GameManager」クラスに「ReduceCost」メソッドを新規追加。コストの減算処理を実装。
・「CardMovement」クラスの「OnBeginDrag」メソッドでコスト値を比較しコスト不足時はカードを動かせないようにするためFLGをFALSEとし処理をReturnする
・「CardMovement」クラスの「OnDrag」「OnEndDrag」でFLGがFALSE時は処理させないためにReturnする
・「DropPlace」クラスの「OnDrop」メソッドで「ReduceCost」をCallする
2)終了時の状態
画面右のコスト値の初期値を1と設定し、1よりも大きいコストのカードは場に出せないようにし、場にカードを出した際にはコストの消費が行われるようになった。ただし移動できないカードを操作した際にもコストが消費されるバグが残っている状態。
3.コスト処理の修正
2項で実装した処理に対してコスト消費する対象カードを判定する。コスト消費は手札→場に出す際に発生するので手札→手札への移動および場に出ているカードではコスト消費しないように処理を実装する。
1)実施内容
・「CardModel」クラスに「isFieldCard」プロパティを新規追加(手札または場の判定用)
・「CardMovement」クラスの「BeginDrag」メソッドで操作可能カードを”手札またはコストが足りている”または”場のカードで操作可能枠付き”とする
・「DropPlace」クラスの「OnDrop」メソッドで「isFieldCard」がTRUE(場に出ている)場合はコスト消費を行わない。またFALSE時はコスト消費後にFLGをTRUEに変更する
・「DropPlace」クラスにTYPEを定義。UIの手札フィールドおよび場フィールドの属性を設定する
2)終了時点の状態
手札→手札への操作時はコスト消費が行われない。2ターン目でコストは0になっているが場に出ているカードの操作はコストは関係ないため操作が可能になっている。
参考サイト
本記事についてはほぼ「Unityゲームスタジオ スタジオしまづ」さまの動画を参考に作業しております。本記事を元に興味をもった方がおりましたら、YOUTUBEサイトのほうで「登録」されてはいかがでしょうか?