この講座はUnityとC#で作るドット絵タクティクス戦略シミュレーションRPG開発講座の第13回です。
前回の記事でSRPGの状況把握が行いやすくなるスマホ対応カメラ回転移動処理や属性攻撃・BGMとSEの開発を行いました。
前回の記事:
SRPGの作り方12 スマホアプリ化対応カメラ移動・属性システム・BGMと効果音の開発
この講座はUnityとC#で作るSRPGのプログラミング開発講座の第12回です。 前回の記事で敵の行動AIパターンやターン変更システムの実装まで完了し、一通り最低限の形でターン制戦略シミュレーションゲームが遊べるようになりました。 前回の記...
この記事ではドット絵キャラクターの移動タクティクスパターンを複数化・途中でコマンドをキャンセルする処理などを開発していきます。
特に、駒の移動パターンの複数化はマスターすれば将棋やチェスのようなボードゲーム開発にも応用できますし、オリジナルのゲーム開発を行う上でとても有用なスキルになるでしょう。
今回は将棋の飛車、角、チェスのクイーンに相当する駒の移動システムを実装します(桂馬や歩兵やチェスのナイトのような駒を作っても面白そうですね。オリジナルの駒を作ってみましょう!)。
複数の移動範囲パターンを実装してタクティクス性を向上させる
今は全てのキャラクターの移動範囲は同じであり、縦と横の計4方向にしか進めません。
ここに個性を持たせるため、追加で2つの移動方法を用意してみましょう。
実装 | 定義名 | 説明 |
既存 | Rook | 縦と横方向に移動できる(従来と同じ) |
新規 | Bishop | 斜め4方向に移動できる |
新規 | Queen | 縦・横・斜めの8方向に移動できる |
まずは以上を定義し、キャラクターオブジェクトのInspectorからそれぞれのキャラに設定できるようにします。動き方として3種類チェスの駒のようなパターンを定義していますが、他の移動パターンを各自追加実装することも可能です。
Character.csを修正して移動パターンを3種類増やす
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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
using System.Collections; using System.Collections.Generic; using UnityEngine; using DG.Tweening; public class Character : MonoBehaviour { // メインカメラ private Camera mainCamera; // キャラクター初期設定(インスペクタから入力) [Header ("初期X位置(-4~4)")] public int initPos_X; // 初期X位置 [Header ("初期Z位置(-4~4)")] public int initPos_Z; // 初期Z位置 [Header ("敵フラグ(ONで敵キャラとして扱う)")] public bool isEnemy; // 敵フラグ // キャラクターデータ(初期ステータス) [Header ("キャラクター名")] public string charaName; // キャラクター名 [Header ("最大HP(初期HP)")] public int maxHP; // 最大HP [Header ("攻撃力")] public int atk; // 攻撃力 [Header ("防御力")] public int def; // 防御力 [Header ("属性")] public Attribute attribute; // 属性 [Header ("移動方法")] public MoveType moveType; // 移動方法 // ゲーム中に変化するキャラクターデータ [HideInInspector] public int xPos; // 現在のx座標 [HideInInspector] public int zPos; // 現在のz座標 [HideInInspector] public int nowHP; // 現在HP // キャラクター属性定義(列挙型) public enum Attribute { Water, // 水属性 Fire, // 火属性 Wind, // 風属性 Soil, // 土属性 } // キャラクター移動方法定義(列挙型) public enum MoveType { Rook, // 縦・横 Bishop, // 斜め Queen, // 縦・横・斜め } (省略)void Start() (省略)void Update() (省略)public void MovePosition (int targetXPos, int targetZPos) (省略)public void AttackAnimation (Character targetChara) } |
Inspectorに設定項目が増えました。サンプルでは以下のようなキャラ設定にします。
- 戦士・オーガ … Rook
- 魔法使い・ナーガ … Bishop
- 勇者・魔王 … Qween
移動方法ごとに移動範囲の取得処理を変更する
キャラクターが個別の移動方法を持つようになったので、移動範囲取得処理の時にその方法によって範囲を変えていくようにします。
まとめ
細かい部分を修正してゲームの遊びやすさと戦略性を向上させることが出来ました。
- キャラクターの移動範囲パターンを増やしました。
- メソッドの引数は省略可能な設定にすることが可能です。
次回はゲームクリアとゲームオーバーを実装していよいよ完成に向かいます。
次の記事:
タクティクスシミュレーションRPGの作り方14 ゲームクリア・ゲームオーバー・フェードインを開発
この記事はUnityを用いたターン制のタクティクスシミュレーションゲームのプログラミング開発講座の第14回です。 前回の記事でキャラクターの移動パターンを増やし、コマンドキャンセル処理を実装しました。かなり戦術面を向上させたゲームを作ること...
コメント