Unity スレスパ風デッキ構築系JRPGの作り方3 コマンドバトルからカードバトル戦闘システムに改造する | Unity入門の森 ゲームの作り方

Unity スレスパ風デッキ構築系JRPGの作り方3 コマンドバトルからカードバトル戦闘システムに改造する

Unity スレスパ風デッキ構築系JRPGの作り方

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

【永久会員チケット】

永久会員チケット|Unity入門の森

全講座を見放題で学ぶ

ソースコード・素材・プロジェクトすべて公開。
Unityの基礎から応用まで、一生使えるスキルを体系的に習得。

この記事はスレスパ風のデッキ構築系ローグライト要素を持つオリジナルJRPGを作る講座の第3回です。

前作のノンフィールドRPG講座で制作したゲーム「果て無きダンジョンをアップデートしていきます。

前回はキャラクターのクラスをカードバトルに対応し、バトルシーンのUIを追加しました。

前回の記事:

Unity スレスパ風デッキ構築系JRPGの作り方2 マナコストの導入とカードバトルへの変更を行う
この記事はUnity入門の森のノンフィールドRPG講座で作ったゲームを改良アップデートしてSlay the Spire風デッキ構築系オリジナルJRPGを作る講座の第2回目です。前回は素材のインポート、カードデータの作成を行いました。前回の記...

第3回ではコマンドUIをカードUIに変更し、カードの使用処理を実装します。実際にデッキからカードが配られ、配られたカードを使用できるところまで作っていきましょう。

【ゲームの作り方講座プレゼント中!】

コマンドUIをカードUIに変更する

カードシステムに変更するため、コマンドUIをカードUIに変更します。このカードUIはプレハブ化して再利用できるようにします。カードとして配るためですね。

Hierarchyウィンドウの[Canvas]→[Button1]→[Icon]オブジェクトをクリックしてInspectorビューを表示します。

ImageコンポーネントのSource ImageにAsset Storeからインポートした[500FreeSkillIcons/Icons]の中から適当な画像をドラッグアンドドロップしておきます(アイコンの見た目を確認しておきます)。

カードのコストを表示するUI

Hierarchyウィンドウの[Canvas]→[Button1]オブジェクトを右クリックし、[UI(Canvas)]→[Image]をクリックします。

Imageオブジェクトの名前を「Cost」に変更してInspectorビューを表示し、下の画像のとおり変更します。

さらに、Costオブジェクトを右クリックし、[UI(Canvas)]→[Text – TextMeshPro]をクリックします。Inspectorビューを表示して、下の画像のとおり変更します。

これでカードのコストを表示するUIが追加されました(仮に数字をTextInputに入れた場合は下図のようになります)。

カードを操作するスクリプト

[Assets/Scripts]フォルダを選択して右クリックし、[Create]→[Scripting]→[MonoBehaviour Script]をクリックします。スクリプトファイルの名前を「CardController」とします。

CardController.cs

カード画像、威力、コスト、カードが使用済みかどうかをまず宣言します。

そしてカードの内容を表示するShowInfoメソッドを追加します。引数にはカードのIDとカードを使用するキャラクターの情報(UnitStatus)を渡します。

威力の表示はswitch 文でカードIDごとに分岐しており、「攻撃」なら攻撃力、「防御」なら防御力、「回復」なら回復量と、カードの種類に合った数値がカードの効果量部分に表示されます。

IsUsed フラグが true のカードはオブジェクトごと非表示にすることで、使用済みカードを手札から見えなくする仕組みも備えています。

画像やコストの取得は GameManager のカードデータに一元管理されており、このクラス自身はあくまで「表示に専念する」ようにしています。

少し難しい言葉になるかもしれませんがプログラムの”責務”を分離する設計になっています(計算部分はUnitStatus.csに任せて得られたデータをカードに表示することに専念しています)。

CardControllerスクリプトをアタッチする

Hierarchyビューにある[Canvas]→[Button1]オブジェクトを選択してInspectorビューを表示します。

一番下にある[Add Component]をクリックし、検索バーにCardControllerと入力します。表示される一覧の中に「Card Controller」が表示されるのでクリックしてアタッチします。

カードのUIをスクリプトにアタッチする

Button1オブジェクトのInspectorビューに[cardIcon]、[powerText]、[costText]が表示されるので、Button1オブジェクトのUIをそれぞれアタッチします。

カードをプレハブにする

Button1オブジェクトは再利用できるようにプレハブにしておきます。

まずはHierarchyビューにあるButton1オブジェクトを右クリックし、[Rename]をクリックします。名前を編集できるようになるので名前を[Card]に変更します。

次にCardオブジェクトをプロジェクトウィンドウの[Assets/Prefabs]フォルダにドラッグアンドドロップしてプレハブにします。

カードUIを並べる

コマンドUIを全部カードUIに置き換えます。まずはHierarchyビューにある既存のコマンドUIである[Canvas]→[Button2]と[Canvas]→[Button3]を右クリックし、[Delete]をクリックして削除します。

続きを読む
このコンテンツはパスワードで保護されています。 コンテンツを読みたい方はUnity入門の森ショップ(https://unityforest.shop/)で講座閲覧権を取得してね。

まとめ

今回はコマンドUIをカードUIに刷新し、デッキから手札を配布する仕組みを実装しました。

カードにはSPコストが設定されており、タッチすると対応するスキルが発動してSPが消費されます。

また「ターン終了」ボタンを追加することで、プレイヤーが好きなタイミングでターンを終えられるようになりました。

これにより固定3ボタンのコマンドバトルから、手札管理とリソース消費を伴うカードバトルシステムへの移行が完成しています。

次回はゲームシステムを拡張するため、レリック・状態異常・イベントの3種類のマスターデータを作成します。それぞれScriptableObjectでデータベース化し、GameManagerから一元管理できる仕組みを整えます。

次の記事:

Unity スレスパ風デッキ構築系JRPGの作り方4 レリック・状態異常・イベントデータの作成
この記事はSlay the Spireみたいなデッキ構築系ローグライト要素を持つオリジナルJRPGを作る講座の第4回です。前回はバトルシステムを固定3ボタンのコマンド選択からデッキを使ったカードバトルへ移行しました。また、マナコストの管理や...

【ゲームの作り方講座もプレゼント中!】

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

【永久会員チケット】

永久会員チケット|Unity入門の森

全講座を見放題で学ぶ

ソースコード・素材・プロジェクトすべて公開。
Unityの基礎から応用まで、一生使えるスキルを体系的に習得。

コメント

タイトルとURLをコピーしました