YOUTUBEのHOWTO動画を参考にオリジナルのカードバトルをUNITYで製作するシリーズもいよいよ第10回となりました。とくに10回目だから特別な何かがあるわけではありません(笑)
前回はコスト表示やコストの消費。コスト消費の対象となるカードの処理を実装しました。今回もひきつづき参考動画をもとにゲーム製作を進めていきます。
1.エネミー側のコスト処理
前回でプレイヤー側のコスト処理およびコストに応じたカード操作を実装しているので、エネミー側でも同様にコストに応じたカードのみを手札から場に出すように実装します。
1)実施内容
・「GameManager」クラスの「EnemyTurn」メソッドにてカードリスト取得にFindAllでコスト以下のリストを取得する
・同処理時に「ReduceCost」メソッドをCallし、カードに応じてエネミー側のコストを消費する
2)終了時点の状態
エネミーターンで配列順序としてはコスト3の「キュアドリーム」がセットされていましたが、コスト判定処理実装後はコスト1のカードが場にセットされるようになりました。またセット後はエネミー側のコスト値が0に減っています。
2.コストの増加
1項の実装まででコストに応じたカードがプレイヤーおよびエネミーからセットされ、コスト値も適正化しました。ゲームとしてはコストはターンに応じて回復するようにする必要がありますのでその実装となります。
1)実施内容
・「GameManager」クラスの「ChangeTurn」メソッドでコストを回復する
・「GameManager」クラスにDefaultCostプロパティを設定、ターン開始時はDefaultCost値に回復し、DefaultCostは1づつ増加する
2)終了時点の状態
コスト値がターン数に応じて増加しつつ回復するようになり、高コストのカードも場に出せるようになりました。
3.ターン時間のカウントダウン
プレイヤーターンについては時間制のルールを採用しています。そのためターン切り替え時にタイマーを初期化し、1秒ごとにカウントダウンする処理を実装します。なお、ターン時間切れした場合はそのまま相手ターンに移行します。
1)実施内容
・「GameManager」クラスに時間管理用のプロパティを追加
・「GameManager」クラスに「CountDown」メソッドを新規作成。1秒ごとにカウントダウンして0秒時にはターン切り替え処理をCall。
・「CountDown」メソッドは「TurnCalc」処理の最初にCall。
今回、タイマー処理する際に突然非同期処理が登場しました。それが1秒ごとにカウントダウンする処理です。Unityでは「Coroutin」という機能を利用するようです。この辺りの解説は「古来よりUnity非同期を実現していたコルーチンとは何者か?」を参考にさせていただきました。
2)終了時点の状態
画面右中央にあるタイマーが1秒ごとにカウントダウンされます。0秒に到達した時点でプレイヤーターンは強制的に終了され相手ターンに移行するようになりました。
参考サイト
本記事についてはほぼ「Unityゲームスタジオ スタジオしまづ」さまの動画を参考に作業しております。本記事を元に興味をもった方がおりましたら、YOUTUBEサイトのほうで「登録」されてはいかがでしょうか?