YOUTUBEのHOWTO動画を参考にオリジナルのカードバトルをUNITYで製作するシリーズ第6回。
前回は敵ターン時に手札から1枚を選択して場にセットする処理まで実装しました。今回もひきつづき参考動画をもとにゲーム製作を進めていきます。
1.カードの攻撃
今回は双方が場に出しているカードから1枚を選択して、それぞれ戦わせる処理を実装します。戦ういっても攻撃力分の値をHPから引き算するだけなので、ポイントとしてはいかにカードをそれぞれ選択して処理させるか?・・・ということになります。
1)実施内容
・CardModelクラスに「Damege」メソッドと「Attack」メソッドを実装
・GameManagerクラスの「EnemyTurn」メソッドに場に配置しているカードを取得する処理を実装
・GameManagerクラスに「CardBattle」メソッドを新規追加。「Attack」メソッドをCallする処理を実装
2)終了時の状態
今回は裏側の処理実装のため画面上からは変化がわかりません。動画の通り操作した場合、裏では戦闘処理が実施されお互いのHPが減っていることをコンソールログにて確認しています。今回のサンプルでは双方HPが3あったものが1に減っていることが分かります。
2.ステータス変更反映
戦闘処理の確認がデバックログ上での確認となっていましたが、その結果を画面上に反映する処理を実装します。
1)実施内容
・「CardView」クラスに「Refresh」メソッドの実装→HPとAT値の更新
・「CardModel」クラスに「isAlive」プロパティを追加→戦闘時にHPが0になったらプロパティをFalse(死状態)
・「CardController」クラスに「CheckAlive」メソッドの実装→カードが死亡状態ならばオブジェクト破棄、生きていれば「Refresh」メソッドをCall
・「GameManager」クラスの「CardsBattle」メソッドで「CheckAlive」メソッドをCall
2)終了時の状態
配置したカード右下がHP値でターンエンド時に3→1に削減されている。2回目のターンエンドでHPが0を下回るため該当カードは場から消えるようになっている。
3.Playerカードの攻撃
現状ではプレイヤーがターンエンド後に敵ターンで相手が攻撃することで互いのHPが減る処理とカードの生死判定を実装していました。今回はプレイヤーが攻撃する処理の実装となります。
1)実施内容
・「AttackedCard」クラスの新規作成
・「AttackedCard」クラスの「OnDrop」イベントにドラッグ&ドロップ時の処理実装
・「GameManager」クラスのインスタンスをシングルトン化
2)終了時の状態
プレイヤーターン時にドラッグ&ドロップによる攻撃が可能になりました。
参考サイト
本記事についてはほぼ「Unityゲームスタジオ スタジオしまづ」さまの動画を参考に作業しております。本記事を元に興味をもった方がおりましたら、YOUTUBEサイトのほうで「登録」されてはいかがでしょうか?