상품 설명
■ マス目の上で戦うゲームは、戦闘に入る前が一番めんどくさい
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. 地形に「射線を遮るか」のフラグは持ちますが、判定そのものは含まれません。
■ ライセンス
購入者ご自身の商用・非商用プロジェクトでご利用いただけます。アセット単体での再配布・販売はご遠慮ください。
모든 리뷰
더보기리뷰 등록
리뷰를 작성하려면 로그인이 필요합니다.
로그인하고 리뷰 쓰기