Unity用 マルチターゲット指定・範囲攻撃システムアセット "Multi Target AoE System"
- ダウンロード商品¥ 400




SRPGの「範囲攻撃まわり」を丸ごと引き受けるC#モジュールです。 範囲攻撃を自作すると、だいたいこうなります。 ・形状を1つ足すたびに、攻撃処理のif分岐が増えていく ・味方を巻き込むかどうかの制御が、攻撃ごとにベタ書きになる ・同時攻撃なのに、先に処理した側だけが有利になってしまう ・同じ敵に3発当たると、ダメージ数字が重なって読めない ・「追撃」を足したくても、既存の攻撃処理のどこに挟めばいいか分からない 本アセットは、これらをまとめて引き受けます。 あなたのユニットクラスにインターフェースを1つ実装するだけで導入できます。 ━━━━━━━━━━━━━━━━━━━━ ■ 7種類の範囲形状 ━━━━━━━━━━━━━━━━━━━━ 範囲の形はすべてScriptableObjectとして作成し、インスペクタで調整します。 ・単体 … 単体攻撃も「形状の1種」。範囲攻撃と同じ処理を通るので分岐が消えます ・円形 … 距離の測り方を変えるだけで 菱形/正方形/真円 を作り分け。最小半径を1にすればリング状に ・十字 … +型/×型/8方向星型。腕の長さ・太さを調整可能 ・直線 … 貫通レーザー・戦列艦の斉射。障害物に当たった時点で弾道を打ち切れます ・扇形 … ブレス・散弾・機銃掃射。角度ではなく「1歩ごとの広がり」で定義するため、グリッド上で狙い通りの形になります ・マス指定 … いわゆるマップ兵器。幾何式では書けない形を、インスペクタでマスを並べて手描き ・合成 … 上記をUnion/Intersection/Differenceで組み合わせ(例:正方形から十字を引く) 新しい形状が必要になっても、本体コードの改変は不要です。 基底クラスを継承してメソッドを1つ書けば、そのままインスペクタに現れます。 ━━━━━━━━━━━━━━━━━━━━ ■ 誰を巻き込むかの制御 ━━━━━━━━━━━━━━━━━━━━ ・フレンドリーファイア … 敵/味方/中立/自分自身の4つのチェックで指定 ・遮蔽 … 範囲内でも障害物の陰にいる対象は自動的に除外(マス走査/Raycastの2実装を同梱) ・対象数の上限 … 「範囲内から最大3体だけ」を優先順位付きで(近い順/残HPが少ない順など) ・タグ条件 … 「対空兵装は飛行ユニットにのみ有効」などをタグ文字列で表現 ・距離減衰 … 爆心地からの距離によるダメージ減衰をAnimationCurveで設計 ━━━━━━━━━━━━━━━━━━━━ ■ バッチ判定パイプライン ━━━━━━━━━━━━━━━━━━━━ 「全ヒットを先に確定してから、一斉に適用する」という2段構えです。 これにより、次の3つが同時に手に入ります。 1. 同時攻撃で相打ちが正しく成立する(先に処理された側が有利になりません) 2. 同一対象への複数ヒットが1つの数値に合算される(ダメージ数字が重なりません) 3. 適用前に結果を覗ける(「追撃が3件来る」と分かってからカメラと尺を組み立てられます) また「この攻撃ではHPを0にしない(必ず1残す)」フラグを用意しています。 一斉射撃で、捕獲予定の敵をうっかり倒してしまう事故を防ぐ安全弁です。 ━━━━━━━━━━━━━━━━━━━━ ■ マルチターゲット指名・連携技 ━━━━━━━━━━━━━━━━━━━━ 「対象をN回自由に指名する」タイプの技を実装できます。同じ相手を複数回選べるので、 1体に集中させて確実に沈めるか、3体へばら撒いて足並みを崩すか というプレイヤーの判断が生まれます。選択状態はイベント駆動の純粋な状態機械として提供されるため、 バッジ表示やSEは購読するだけで配線できます。 さらに「近くに特定の仲間が居るときだけ発動できる連携技」の条件も定義できます。 ・専用グループ型 … 決まった顔ぶれ同士でのみ成立する固有技 ・資格+条件型 … 「隊長格を中心に、条件を満たす仲間がN人以内に居れば発動」 相方は既定では「その場に居るだけでよく、自分の行動を消費しない」設計です。 ━━━━━━━━━━━━━━━━━━━━ ■ 追撃(Follow-up) ━━━━━━━━━━━━━━━━━━━━ 「初期攻撃 → 条件判定 → 追撃キュー生成 → 順次実行」をパイプライン化しています。 条件はScriptableObjectとして5種類を同梱。 速力差/HP閾値/タグ/確率/初撃の結果(命中・外れ・クリティカル・撃破・非撃破) AND・ORで組み合わせられ、連鎖の最大段数を指定できるので暴走しません。 独自の条件(「背後から攻撃したとき」など)も、継承1クラスで追加できます。 ━━━━━━━━━━━━━━━━━━━━ ■ 演出のテンポを作れる進行役 ━━━━━━━━━━━━━━━━━━━━ 「予兆 → 発射 → 着弾 → 追撃」を、コルーチンで“間”を置きながら流します。 待ち時間はすべてインスペクタから調整できるため、コードを触らずにテンポを詰められます。 イベント(開始/1発ごと/ダメージ適用/追撃開始/完了)が用意されているので、 マズルフラッシュ・カメラワーク・ダメージ数値表示は購読するだけで繋がります。 ━━━━━━━━━━━━━━━━━━━━ ■ 導入は3ステップ ━━━━━━━━━━━━━━━━━━━━ 【1】自分のユニットクラスにインターフェースを実装する public class MyUnit : MonoBehaviour, IAoEAffectable { public GridCoord Cell => tilemap.WorldToCell(transform.position); public int TeamId => teamId; public int CurrentHealth => hp; public CombatStats Stats => stats; // アセットはHPを直接書き換えません。必ずこの2つを呼ぶだけです public void ApplyDamage(int amount, in HitOutcome o) { hp -= amount; PlayHitEffect(); } public void ApplyMiss(in HitOutcome o) { PlayDodgeEffect(); } } 【2】初期化する runner.Configure( targets: registry, relations: new TeamRelationResolver(), lineOfSight: new GridLineOfSight(cell => walls.HasTile(cell.ToVector3Int())), cellValidator: cell => board.Contains(cell)); 【3】撃つ StartCoroutine(runner.ExecuteAreaAttack(attacker, bombAttack, clickedCell)); 対象決定 → 命中判定 → ダメージ適用 → 追撃まで、演出の“間”つきで自動的に流れます。 ━━━━━━━━━━━━━━━━━━━━ ■ ダメージ計算式は丸ごと差し替えられます ━━━━━━━━━━━━━━━━━━━━ 標準的な命中率・ダメージ計算を同梱していますが、インターフェースを1つ実装するだけで 完全に置き換えられます。その場合も、範囲判定・バッチ処理・追撃パイプラインはそのまま動作します。 既存の戦闘システムをお持ちの方は、計算部分はご自身のコードのまま、 「範囲まわり」だけを本アセットに任せる、という使い方ができます。 攻撃1種ごとに計算式を変えることも可能です(魔法だけ別式にする等)。 ━━━━━━━━━━━━━━━━━━━━ ■ 実演デモシーンを同梱しています ━━━━━━━━━━━━━━━━━━━━ 上の動画と同じものが、購入後はあなたの環境で動きます。 メニューを1回押すだけでシーンごと自動生成され、あとは再生ボタンだけで16機能が自動再生されます。 パラメータをその場でいじって挙動を確かめられるので、 「自分のゲームに合うか」をコードを書く前に判断できます。 デモのソースは、そのまま導入コードの見本にもなっています。 初期化処理・範囲プレビューの出し方・ダメージ数値の表示方法が、実際に動く形で読めます。 デモは外部アセットを一切使っていません(図形はすべてコード生成、画像・音声・フォントファイルは0個)。 確認が済んだらフォルダごと削除できます。本体には一切影響しません。 ━━━━━━━━━━━━━━━━━━━━ ■ 動作環境 ━━━━━━━━━━━━━━━━━━━━ ・Unity 2022.3 LTS 以降 ・追加パッケージ不要(DOTween等のプラグインも不要) ・Input Systemはどちらの設定でも動作します ・2D/3Dどちらのプロジェクトでも動作します(グリッド実装に依存しません) ・専用のAssembly Definitionで隔離されているため、既存コードと名前空間・クラス名が衝突しません ━━━━━━━━━━━━━━━━━━━━ ■ 収録内容 ━━━━━━━━━━━━━━━━━━━━ ・C#ソースコード一式(難読化なしのフルソース) ・Assembly Definition(Runtime/Demo/Samples) ・実演デモシーン(メニュー1クリックで構築・16機能を自動再生) ・動作確認用の最小構成サンプル3種 ・README(日本語版・英語版)/デモ専用README(日本語版・英語版) XMLドキュメントコメントとインスペクタのツールチップは、すべて日英併記です。 関数の意図・設計理由・注意点をコード内で読めるため、 「買ったはいいが使い方が分からない」を極力なくしています。 ━━━━━━━━━━━━━━━━━━━━ ■ よくあるご質問 ━━━━━━━━━━━━━━━━━━━━ Q. ヘックスグリッドでも使えますか? A. 座標型はグリッド実装に依存しないため使用できます。ただし同梱の幾何形状(円形・十字・扇形など)は 正方グリッド前提の計算です。ヘックス用の形状は継承1クラスで追加してください。 Q. 既存の戦闘システムに後から組み込めますか? A. 想定している使い方です。ダメージ計算は差し替えでき、HPの書き換えも必ずあなたのコードを経由します。 撃破演出・スコア加算・セーブなどの副作用は、すべてあなたの管理下に残ります。 Q. UIは含まれますか? A. 含まれません。本アセットはロジック層に専念しています。 範囲プレビュー用のセル一覧・選択回数・命中率はすべて取得できるので、 お手持ちのUIへ繋いでいただく形になります。 Q. ノードベース(マス目のない)マップでも使えますか? A. 各ノードに一意な整数IDを割り当てて座標へ詰めることで使用できます。 その場合は幾何形状ではなく、マス指定形状または独自形状をご利用ください。 Q. マルチプレイ/ネットワーク対応はしていますか? A. していません。判定は単一クライアント上で完結する設計です。 ただし「判定」と「適用」が分離されているため、判定結果を送受信する構成には組み込みやすい作りです。 ━━━━━━━━━━━━━━━━━━━━ ■ ライセンス・サポート ━━━━━━━━━━━━━━━━━━━━ ・個人・法人を問わず、商用利用可能です ・購入者ご本人のプロジェクトでご利用ください。ソースコードの再配布・素材としての転売はご遠慮ください ・不具合のご報告・ご質問はBOOTHのメッセージよりお願いいたします



