Unity カードバトルRPGの作り方20 無限に遊べるダンジョン・デッキ補充・手札を捨てる処理の実装 | Unity入門の森 ゲームの作り方

Unity カードバトルRPGの作り方20 無限に遊べるダンジョン・デッキ補充・手札を捨てる処理の実装

Unity 本格カードゲームの作り方 ハクスラローグライク×デッキ構築型カードバトルRPG「呪術迷宮」を作る


Unity入門の森オリジナル本格ゲーム制作講座はこちら
11種類の本格ゲームの全ソースコード公開・画像&動画による解説付き

この記事はUnityでハクスラローグライク×デッキ構築型カードバトルRPG「呪術迷宮」を作る講座の第20回です。

前回はバトル時にカード効果をわかりやすく表示するためのウィンドウシステムを実装しました。

前回の記事:

Unity デジタルカードゲームの作り方19 カードの効果説明メッセージウィンドウの実装
この記事はUnityでハクスラローグライク×デッキ構築型カードバトルRPG「呪術迷宮」を作る講座の第19回です。前回はカードショップシステムの実装とUnityパーティクルを利用したエフェクトの作り方を解説しました。前回の記事:実はここまでの...

今回はリリース時のゲームをより長く楽しんでもらうための一つの方法として無限のダンジョン階層を実現する方法を解説します。

次に、長期戦になった際にデッキからカードを引けなくなる可能性があります。こうした場合のデッキ補充システムも実装します。

最後にデッキからカードを捨てる機能も併せて実装します。


【Line登録者限定のプレゼントもあるよ!】

Unityで無限ダンジョンステージを実装する

ゲームのやり込み性を向上させるために新たなシステムの実装を行います。

11章にてステージデータの定義を行いましたが、現状では全て「複数回の戦闘で生き残ればステージクリア」という設定になっています。

これでは最後のステージをクリアできる程強くなった後は目標が無くなってしまいます。

最後のステージをとてつもなく難しくしても良いのですが、今回は無限にステージ攻略が続いていく「無限ステージシステム」の実装を行ってみます。

ステージデータ(StageSO)設定

ステージデータを設定する際、無限ステージの設定に拡張できるよう修正していきます。

StageSO.cs

infinityModeをONにしたステージだけ無限ステージとして扱うようにします。無限ステージの場合、進行度別の敵テーブルを格納するappearEnemyTablesパラメータは無視されます(よって設定不要)。

 

infinity_EnemyDatasリストにザコ敵データ、infinity_BossDatasリストのボス敵データをそれぞれ任意の個数格納していきます。進行度とは関係なく常に出現する敵はランダムに抽選されます。

ザコ敵をbossDistanceで決められた回数分倒すと次の敵はボス敵となります。

ステージ攻略に伴って少しずつ難易度を上げていくために、進行度が1進む度にenemyHPIncreaseで設定した分だけ敵最大HPが上昇していきます。

 

以上の設定を任意のStageSOファイルに行ってみましょう。

 

無限ステージスクリプト

スクリプトを拡張して無限ステージモードに対応できるようにしていきます。

CharacterManager.cs内 SpawnEnemyメソッド

まずは「ステージが進むごとに敵の最大HPが上がる」という仕様を満たすため、敵出現時の処理から変更します。

続きを読む

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

カードタップによって強制的にカード効果の発動が開始され、デッキ枚数回復とともに残りHPが半減します。

 

カードを捨てるシステムの実装

フィールドエリア左下にはトラッシュゾーンが存在します。これは戦闘中に不要となったカードを処分するための場所です。

手札の枚数を減らしておくことで次のターン開始時により多くの新しいカードを引けるようにするという戦術を可能にするシステムです。ここまで未実装でしたので併せて実装しておきましょう。

 

処分されるカードの動作は既にCardクラス内でHideMoveTweenというメソッドを用意しているのでこれを使います。

カードの処分を開始するタイミングは効果発動ボタンを押した時なので、FieldManagerのCardPlayButtonメソッドから追加メソッドを呼び出すようにします。

FieldManager.cs内 新規メソッド

トラッシュゾーンに置かれている全てのカードをリスト化し、それらを順番に画面外へ退避させる演出を行ってからまとめてオブジェクト消去するという流れです。

 

退避演出を呼び出す時、ゾーン内に複数のカードが置かれている場合は上に積まれているカードから順番に演出開始するようにしています。

その為にゾーン内カードリストを、Sceneビューでのオブジェクトの並び順と同じになるようにSortで並べ替えをしています。

同じ親をもつオブジェクト間の並び順はTransform.GetSiblingIndexメソッドで取得する事が出来るので、これをSortの条件に指定しています。

このメソッドを効果発動のタイミングで呼び出すようにします。

FieldManager.cs内 CardPlayButtonメソッド

 

これでトラッシュゾーンのシステムが実装できました。

 

まとめ

今回はカードゲームのやりこみ性を向上させるための工夫を多数行いました。

無限階層まで遊べるゲームの作り方に関してはカードゲーム以外でも応用できるテクニックなのでぜひ習得してもらえたらと思います。

また、ゲームの難易度に関わらず、ユーザーインターフェースはなるべく親切に設計してあげると誰が遊んでも楽しみやすいゲームになります。

次章は重要なセーブ&ロードのシステムとサウンドを実装し、このゲームを完成させていきましょう!

次の記事:

Unity ローグライクカードバトルゲームの作り方21 セーブシステム・BGM・SEの実装とビルド方法を解説
この記事はUnityでハクスラローグライク×デッキ構築型カードバトルRPG「呪術迷宮」を作る講座の第21回です。前回はダンジョンの無限階層化、デッキ補充システム、そして手札を捨てる処理を実装し、やり込みプレイに対応できるようにシステムを改良...

Unity ハクスラローグライク×デッキ構築型カードゲーム「呪術迷宮」の作り方講座に戻る>>



Unity入門の森オリジナル本格ゲーム制作講座はこちら
11種類の本格ゲームの全ソースコード公開・画像&動画による解説付き

コメント

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