Unity用 グリッド移動&ターン順システムアセット "Grid Movement & Turn Order System"
- ダウンロード商品¥ 200






■ マス目の上で戦うゲームは、戦闘に入る前が一番めんどくさい SRPG やタクティクス RPG を作り始めると、ダメージ計算より先に手が止まるのがこのあたりです。 移動範囲を出したい。でも森は 2 マス分、沼は 3 マス分にしたい。 壁の向こうへ回り込む経路を、ちゃんと最短で出したい。 敵に近づいたら殴られるのか、事前に見せたい。 「自軍ターン→敵ターン」を、あとから「素早さ順」に変えたくなった。 出撃前に陣形どおり並べたいが、1 マス塞がっていると全部ずれる。 このアセットは、その土台——**移動範囲・経路・攻撃範囲・危険域・接近 AI・行動順・出撃前の配置**——を丸ごと引き受けます。 ■ できること ●地形コスト込みの移動範囲 平地 1・森 2・沼 3。コストを積み上げて計算するので、**常に一番安い行き方**が返ります(コスト 3 の近道より、コスト 1 を 2 回の方が安い、という当たり前の判断ができます)。 ●経路も同時に返る どのマスへも最短経路が付いてきます。マスにカーソルを合わせるたびに経路を引き直しても、探索そのものはやり直されません。 ●移動タイプはデータ 「歩行」「飛行」「水上」は ScriptableObject です。飛行なら地形コストも岩壁も無視、水上なら沼だけコスト 1 で森は進入不可——といった設定が**コードを書かずに**作れます。地形 × 移動タイプの表を作る必要もありません。 ●通過と停止は別扱い 味方の上は通れるが、そこで止まることはできない。ほぼ全てのタクティクスゲームがそうなっている挙動が、既定で入っています。敵は通せんぼ、幽体なら敵も通り抜け、も設定 1 つです。 ●危険域(移動後攻撃範囲) その敵が**移動してから攻撃できる全マス**が 1 行で返ります。「ここに立ったら殴られるのか」を赤く塗るだけで、プレイヤーが最も欲しがる表示が完成します。 ●接近 AI 近さを直線距離ではなく**実際に歩く距離**で測ります。直線距離で判断すると、壁の手前が「一番近い」ことになってそこから一歩も動けなくなりますが(実際に踏んだ罠です)、目標から盤面へコストを広げた距離マップを使うことで、遠回りが必要でも確実に前へ出ます。 ●行動順は 2 方式 ・陣営フェーズ制 … 自軍が全員動いたら敵軍へ(ファイアーエムブレム型) ・イニシアチブ制 … 素早さ順に 1 体ずつ、陣営が入り混じる(FFT 型) 切り替えは設定アセットを差し替えるだけです。次に動く順番を返すメソッドもあるので、画面上部の行動順バーもそのまま作れます。 ●出撃前の配置 配置ゾーンと陣形を渡すだけ。陣形の位置が塞がっていたら**近い順に空きマスを探して**振り替えるので、「1 マス足りなくて配置できない」という詰み方をしません。複数部隊を横に並べる機能も入っています。 ●盤面の形を選べます 四角(斜めなし/斜めあり)と六角に対応。距離の測り方も隣接の定義も、設定 1 つで切り替わります。 ■ 導入は 3 ステップ 【1】ユニットと盤面をつなぐ public class MyUnit : MonoBehaviour, ITacticsUnit { public int TeamId => team; // 同じ値どうしが味方 public Vector3Int Cell => cell; // Tilemap 座標でも自前の座標でも可 public int MovementRange => move; public MovementProfile Movement => profile; // 歩行・飛行… // …ほか、生存・行動済み・素早さを返すだけ public void MoveTo(Vector3Int c) { cell = c; } } 盤面は「そのマスは存在するか」「地形は何か」の 2 つを答えるだけです。すぐ使える実装も同梱しています。 【2】移動範囲を求めて動かす var range = MovementQuery.GetReachable(board, units, unit); foreach (var cell in range.ReachableCells) Highlight(cell); var path = range.GetPath(target); unit.MoveTo(target); 【3】行動順を回す var turns = new TurnSystem(units, turnOrderSettings); turns.Begin(); turns.MarkActed(unit); // ← 呼ぶのは基本これだけ フェーズの切り替えも、ターン番号の繰り上げも、行動済みの解除も自動で進みます。 ■ 今ある盤面も UI も、そのまま使えます **盤面の実装を知りません。** Tilemap を使っていても、自前の二次元配列でも、3D の升目でも、インターフェースを 2 つ実装するだけで動きます。座標は `Vector3Int` をそのまま使うので、独自の座標型を覚える必要もありません。 **UI を持ちません。** 移動範囲の色も、経路の矢印も、行動順バーの形も、ゲームの雰囲気そのものです。本アセットはセル座標と判定結果だけを返し、見た目は購入者が作ります(デモに描画の実装例が丸ごと入っています)。 **戦闘計算も持ちません。** ダメージや命中は対象外です。すでに戦闘を作ってある人ほど、素直に組み込めます。 ■ 実演シーンを同梱 メニュー 1 クリックでシーンを構築し、再生するだけで 14 場面が字幕付きで自動再生されます(操作不要・無限ループ)。 移動範囲/地形コスト/通行不能/飛行との比較/経路と総コスト/味方と敵の扱い/攻撃範囲/危険域/壁を回り込む接近 AI/陣営フェーズ制/イニシアチブ制/ターン終了/配置/複数部隊の配置——を目で見て確認できます。マスの上には到達コストの数字が出ます。 外部素材はゼロで、図形はコード生成、文字は OS フォント参照です。 ■ 動作環境 ・Unity 2022.3 LTS 以降 ・追加パッケージ不要(外部プラグインにも依存しません) ・Input System はどちらの設定でも動作します(入力を一切使いません) ・2D / 3D どちらでも動作します(描画を行わないため) ・Tilemap の有無を問いません ■ 収録内容 ・Runtime(本体)… 移動範囲と経路・攻撃範囲と危険域・接近と撤退・距離マップ・行動順 2 方式・陣形と配置・地形と移動タイプ・四角/斜め/六角の距離計算 ・Samples … 最小構成のコード例 4 本(ユニット実装/盤面実装/1 ターンの回し方/配置) ・Demo … 実演シーン一式(メニューから自動生成。削除しても本体に影響しません) ・動作確認メニュー … 140 項目の自己診断をその場で実行できます ・README(日本語/英語) ・フルソース付属。改変して組み込めます ■ よくある質問 Q. 戦闘計算は含まれますか? A. 含まれません。ダメージ・命中・スキルは対象外です。当社の「Reaction & Assist System」や、ご自身の戦闘処理と組み合わせてお使いください。 Q. Tilemap を使っていますが動きますか? A. 動きます。盤面は「そのマスは存在するか」「地形は何か」を答えるインターフェース越しにしか触らないため、Tilemap から地形を引くように書くだけです。 Q. ヘックスマップでも使えますか? A. 使えます。四角(斜めなし/あり)と六角に対応しています。 Q. 描画はしてくれますか? A. しません。セル座標と判定結果を返すところまでです(デモに描画の実装例が入っています)。 Q. 1 マスに複数ユニットを重ねられますか? A. 1 マス 1 ユニット前提です。重ねる設計は対象外です。 Q. 射線判定はありますか? A. 地形に「射線を遮るか」のフラグは持ちますが、判定そのものは含まれません。 ■ ライセンス 購入者ご自身の商用・非商用プロジェクトでご利用いただけます。アセット単体での再配布・販売はご遠慮ください。





