戦略シミュレーションRPGの作り方9 ターン制戦闘システムとSLGのコマンド入力を開発

Unity SRPG(戦略シミュレーションゲーム)の作り方


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

この記事はターン制の戦略シミュレーションRPGの作り方講座の第9回目です。

前回の記事ではUIの設定を行いながら、キャラクターにHPや攻撃力や属性システムに用いるパラメータを設定しました。

前回の記事:

ターン制戦略シミュレーションRPGの作り方8 パラメータ・属性システムGUI表示
この記事は古く昔からの名作タクティクスオウガやファイアーエムブレムやファイナルファンタジータクティクスのような名作ターン制戦略シミュレーションRPGの作り方を解説する講座の第8回目です。 前回はプレイヤーの移動範囲の設定や移動可能範囲エリ...

今回の記事では設定したパラメータを基にして実際の攻撃や戦闘機能をつくっていきましょう。

いよいよSRPGの戦闘システムの実装ですね。ここから一気にゲームが完成に向かっていきます!


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

移動完了後のコマンドボタンを表示する

このゲームにおいて攻撃行動はキャラクターの移動完了後に行えますので、まずはそのタイミングで「攻撃」のボタンを表示する所から始めましょう。

また、攻撃せずターンを終了したい場合のために「待機」ボタンもあわせて用意します。両方ともここではコマンドボタンと称して扱います。

 

まずはGUIでボタンを作成してみましょう。

最初にCanvas以下に空のオブジェクト(CommandButtons)を作成します。このオブジェクトのオンオフで2つのボタンの表示・非表示切り替えを可能にするため、コマンドボタンのオブジェクトを子に作成していきます。

ボタンUIの作成は右クリック→[UI]→[Button]から行います。攻撃ボタンから作成するので名前は「AttackCommand」としました。

ボタンUIオブジェクトは作成の際に、自動的に子オブジェクトとしてTextUIが生成されます。これはボタン上に表示する文章になっています。後で変更します。

ボタン画像の表示

まずはボタンの画像を表示・配置させましょう。画像素材はCommandButtonを使用します。

サンプルでは画面の右下辺りに設置しました。アンカーも右下(Right Bottom)に合わせておきましょう。

画像の引き延ばしが綺麗でないので、前回ステータスウィンドウを作成した時と同様に画像素材(スプライト)側に9スライスの設定を行います。

Sprite Editorを開き、それぞれの端から30ピクセルのラインで分割するようにします。

後はオブジェクト側でSlicedに変更を行えばOKです。

ボタンテキストの設定

ボタン作成時に自動的に取り付けられているTextオブジェクトに対して設定を行っていきます。

文章を変更し、これが攻撃ボタンである事が分かるようになればOKです。

 

待機ボタンの作成

攻撃ボタンが作成できたら、待機ボタンオブジェクト(StandbyCommand)も同様に作成しておきます。

設定はほぼ同じなので、オブジェクトをコピー&ペーストし位置と文字だけ変更します。プレハブ化を行うかは任意です。

コマンドボタンの表示・非表示

キャラクターが移動を完了した後にのみこのボタンを表示し、どちらかのボタンが押されたら両方のボタンが非表示化するようにしたいです。

ボタン押下時の処理などはこの後に用意するので、まずはGUIマネージャ側で表示・非表示機能を作成しておきます。

GUIManager.cs

Inspectorからコマンドボタンの親(CommandButtons)への参照をセットしておきましょう。

ボタン押下時の処理を作成する

次はボタンをタップした時に開始する処理をそれぞれゲームマネージャ内に追加します。

GameManager.cs 新規メソッド
  • 攻撃ボタン押下時には攻撃範囲を取得して表示する処理をこの後実装します。
  • 待機ボタン押下時はそこでターンを終了し、敵のターンまで進行モードを進めます。

メソッドが用意できたので、ボタンが押された時にこれらを呼び出す設定を行います。

まずは攻撃ボタン側のButtonコンポーネントを確認してください。

下部にある[On Click ()]欄にメソッドを追加するとそのメソッドが呼び出し対象となります。

[+ボタン]→オブジェクト指定→コンポーネント指定→メソッド指定の順番で設定します。対象のメソッドはpublicである必要があります。

攻撃ボタンの場合はAttackCommandメソッドを指定すればOKです。

同様に待機ボタンに対してもStandbyCommandメソッドの呼び出しを設定します。

攻撃範囲を取得して表示する

これでボタン側の設定は完了しました。まだボタンの表示メソッドを呼び出していないので動作に変化はありませんが、待機ボタンを押された場合の処理までは完成しています。

このまま攻撃処理を実装するために、まずはキャラクターが攻撃できる範囲を取得する所から進めていきます。既に「移動範囲の取得と表示」で行った事と殆ど同じなのでサクサクいきましょう。

攻撃範囲をキャラクターの周囲8マスとした場合以下のような実装になります。

続きを読む

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

まとめ

ここまでの開発でキャラクターの移動から攻撃までが一通り可能となりました。しかし、ゲーム的な演出としてアニメーションはやはり欲しいですね。

次回はDoTweenを使用したオブジェクトやUIのアニメーションの実装、処理の遅延実行について学んでいきます。

次の記事:

戦略シミュレーションRPGの作り方10 DOTweenでターン制戦闘管理とアニメーションを実装
この記事はUnityとC#でSRPGの作り方を解説する講座の第10回目です。 ここまでの開発でキャラクターの移動と攻撃までが可能になりました。ターン制の戦略ストラテジーシミュレーションゲームの基盤ができてきましたね! 前回の記事: ...

Unity SRPG(戦略シミュレーションゲーム)プログラミング講座に戻る>>



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


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

コメント

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