現場レベルのゲーム制作が、すべてここで学べます。
この記事はUnity入門の森のノンフィールドRPG講座で作ったゲームを改良アップデートしてSlay the Spire風デッキ構築系オリジナルJRPGを作る講座の第2回目です。
前回は素材のインポート、カードデータの作成を行いました。
前回の記事:

第2回ではキャラクターのクラスをカードバトルに対応させます。そしてバトルシーンのUIを追加していきます。
また、前作まではただのコマンドバトルでしたが、カードバトルにする際にマナコストを導入します。
マナコストはSlay the Spireやシャドウバースなどでもおなじみですね。ハイコストなカードとローコストなカードをどう組み立てていくかで戦略性が生まれます。
各カードを使用したときにマナを消費し、ターン開始時に毎ターンマナが補充される形のバトルシステムにアップデートしていきましょう。
まずは[Assets]→[Scenes]にある[Battle]をダブルクリックしてバトルシーンを開きます。
スクリプトを変更する
次に、戦闘システムの変更に合わせて不要になる要素を削除し、必要な定数を追加していきます。
以下のようにスクリプトに修正を加えていきましょう。
GameConstants.cs
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
using UnityEngine; public class GameConstants { public const string SaveDataKey = "HATENAKIDUNGEON";// データ保存で使うキー public const int StartLevel = 1;// ゲーム開始時のレベル public const int StartFood = 100;// ゲーム開始時の食料 public const int InitialFloor = 1;// 最初の階層 public const int HeroBaseHp = 45;// プレイヤーのHP public const int HeroRateHp = 5;// プレイヤーのレベル1ごとの上昇HP public const int EnemyBaseHp = 8;// 敵キャラのHP public const int EnemyRateHp = 3;// 敵キャラのレベル1ごとの上昇HP public const int HeroBaseAttack = 3;// プレイヤーの攻撃力 public const int HeroRateAttack = 3;// プレイヤーのレベル1ごとの上昇攻撃力 public const int EncountRate = 50;// 敵キャラとの遭遇率(%) public const float MoveSpeed = 3f;// 前進の速さ public const float MoveDistance = 3f;// 前進した時のカメラの移動距離 public const float RecoveryRate = 0.2f;// HPの回復量 //public const int RecoveryCT = 3;// (削除)回復スキルのクールタイム public const float TurnSpeed = 1f;// ターンの処理の待ち時間 public const float ShakeDuration = 0.2f;// 揺れ演出の揺れの時間(秒) public const float ShakeMagnitude = 0.1f; // 揺れ演出の揺れの強さ public const float BattleFinishDelay = 1f;// 戦闘終了時の演出ステップの待機時間 public const int UpgradeStartCost = 1;// ポイントで強化するときの基本コスト public const int HeroInitSP = 3;// (追加)ターンごとに初期化されるSPの値 public const int HeroDealNum = 3;// (追加)主人公のカード配布枚数 public const int HeroBaseDefense = 3;// (追加)プレイヤーの防御力 public const int HeroRateDefense = 1;// (追加)プレイヤーのレベル1ごとの上昇防御力 } |
カード使用に必要なSP(他のカードゲームで言うといわゆるマナコスト)を新しく定義します。
さらに、プレイヤーの防御力を定義しカード効果に使用します。Slay the Spireなどで出てくる”カードを使用すると次のターンまでブロック(防御力)を蓄える”ことができるようにしていきます。
UnitStatus.cs
戦闘システムの変更にともない、CT(クールダウンタイム)は廃止し、カードを使用するときに消費するSP(スキルポイント)を追加し、受けるダメージを相殺するGP(ガードポイント)も追加します。
ダメージを受けるときはGPで相殺するようにします。
また、所有しているカードを代入しておくデッキ(Deck)と、戦闘中に配布されたカードを代入しておく手札(Hand)を追加します。
さらに、所有しているカードから配布するメソッド、ターンのときに呼び出されるメソッド、戦闘が終了したときに呼び出されるメソッドも追加します。
まとめ

今回はキャラクターのクラスをカードバトルに対応し、バトルシーンのUIを追加しました。マナコストの概念も導入し、画面左下にマナを表示するための準備を行いました。
次回はバトルシステムを大きく刷新し、固定3ボタンのコマンド選択からデッキを使ったカードバトルへ移行します。SPコストの管理やターン終了ボタンの実装など、カードゲームらしい手札運用の仕組みを作り上げていきます。
次の記事:

現場レベルのゲーム制作が、すべてここで学べます。







コメント