Unity ノンフィールドRPGの作り方講座12 ターン制バトルでの演出強化・勝敗判定・レベルアップ処理の実装 | Unity入門の森 ゲームの作り方

Unity ノンフィールドRPGの作り方講座12 ターン制バトルでの演出強化・勝敗判定・レベルアップ処理の実装

Unity 初心者向けノンフィールドRPGの作り方 (スマホ化対応)

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

【永久会員チケット】

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

全講座を見放題で学ぶ

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

この記事はUnityとC#でノンフィールドRPGを作る講座の第12回です。

前回はバトルシーンでの主人公ターンと敵キャラターンの進行およびバトル中のオーディオの準備を実装しました。

前回の記事:

ノンフィールドRPGの作り方講座11 ターン制戦闘システムを構築する/効果音の実装
この記事はノンフィールドRPGの作り方講座の第11回です。前回はバトルシーンでの敵キャラの表示やステータスウィンドウの表示を実装、そしてスキル使用時の処理を実装しました。前回の記事:第11回ではスキルボタンをタッチして主人公ターンと敵キャラ...

第12回では攻撃時や被ダメ時(被ダメは被ダメージの略でキャラクターが受けるダメージのこと)の画面揺れと効果音、バトル勝利・敗北時の処理、さらに勝利時のレベルアップ処理を実装していきます。

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

BattleDirector.csに演出を追加

[Assets/Scenes/Battle]をクリックしてバトルシーンを表示します。

主人公がダメージを受けたときに効果音が再生されてカメラが揺れる演出と、敵キャラがダメージを受けたときに効果音が再生されて敵キャラの画像が揺れる演出を実装します。

画面を揺らして音を鳴らすだけでも一気に戦闘の臨場感が出てきます。

GameConstants.cs

まずは使用する定数を追加します。

ここで追加した定数の使用方法はコメントの通りです。

BattleDirector.cs(演出処理)

まず、カメラを揺らすためにカメラをアタッチしておくための変数を宣言します。

UseSkillメソッドに揺らす対象となるオブジェクトを引数として渡せるようにします。それにともなってUseSkillメソッドの呼び出し側の引数も変更します。

主人公は敵キャラの画像オブジェクト(EnemySprite.gameObject)を、敵キャラはカメラオブジェクト(CameraObject)を渡しています。

また、UseSkillメソッドの中のAttackの処理内で分岐に応じて攻撃やガードの効果音を鳴らしています。

TouchButtonのところで呼び出すUseSkillの引数が長くなっているので入力ミスに気を付けましょう。

Main Cameraをアタッチする

主人公がダメージを受けたときに揺らすカメラをアタッチします。

では実行してみて、主人公の被ダメ時と敵キャラの被ダメ時、そしてガードしているときの演出を確認してみましょう。

ですが、今のままではプレイヤーや敵キャラのHPが0になっても戦闘が終了しませんね。

次は戦闘の勝利/敗北判定やレベルアップ処理を作っていきましょう。

ターン制バトル戦闘の勝利と敗北/レベルアップ処理を実装する

敵キャラのHPが0になったら勝利、主人公のHPもしくは食料が0になったら敗北となります。

勝利したら敵キャラから獲得経験値を取得して、主人公キャラの経験値に加えます。そして次のレベルアップに必要な経験値がたまったらレベルを上げるようにします。

UnitStatus.cs

まずは獲得できる経験値を取得するためのメソッド、次のレベルアップに必要となる経験値を取得するためのメソッド、そしてレベルアップしたかどうかを取得するためのメソッドを追加します。

 

GameManager.cs

戦闘に勝利したときに呼び出すメソッドと、敗北したときに呼び出すメソッドをGameManagerに追加します。

シーンファイルの名前をenum型で定義しておきましたが、誤りがあったので修正します。

エラーの修正:SceneCode.EndをSceneCode.Resultに変更

ここでシーンのEnumを変更したことで新しくエラーが出るはずです。

DungeonDirector.csでSceneCode.Endを記述しているところをSceneCode.Resultに変更します。

DungeonDirector.csの修正

(余談)今回は些細な変更ですが、リアルな開発ではこうした小さな修正が過去のプログラムに影響を及ぼすことが増えてきます。

規模が小さい段階からわかりやすいプログラムを書くことを心がけましょう。ですが常に完璧なものを目指し過ぎてもなかなかゲームが完成しません。

バランスよく開発を進めていきましょう。実践的なゲーム開発は泥臭いものです。

BattleDirector.cs(勝利・敗北・レベルアップ処理を追加)

さて、次は主人公と敵キャラのターン開始時に生死判定をします。判定結果にもとづいて戦闘勝利や敗北処理を実行できるようにします。

勝利した場合は経験値を取得後にレベルアップ判定を行い、レベルアップしていたらレベルアップの効果音と表示処理を実行します。

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

まとめ

それではUnityで実行してみましょう。

敵を倒したときはダンジョン画面に戻り、経験値がたまったらレベルアップ。

そして主人公のHPが0になったらリザルトシーンに遷移すれば成功です。

ここまでで攻撃時や被ダメージ時の演出、バトル勝利・敗北時の処理、さらに勝利時のレベルアップ処理を実装し、バトルの一連の流れは完成しました。

ですが、まだリザルトシーンは何も作れていません。戦闘で敗北した後にゲームの流れが途絶えてしまいますね。

そこで、次回はゲームオーバー時のリザルトシーン&タイトルシーンでポイントを使って主人公を強化するUIを作成します。

次の記事:

ノンフィールドRPGの作り方講座13 ゲームオーバー時のリザルトシーンと経験値システムの実装
この記事はノンフィールドRPGの作り方講座の第13回です。前回は攻撃時や被ダメージ時の演出、バトル勝利・敗北時の処理、さらに勝利時のレベルアップ処理を実装しました。前回の記事:第13回ではゲームオーバー時のリザルトシーンの作成を行います。リ...

Unity ノンフィールドRPGの作り方講座に戻る>>

 

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

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

【永久会員チケット】

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

全講座を見放題で学ぶ

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

コメント

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