Unity用 リアクション&支援システムアセット "Reaction Assist System""
- ダウンロード商品¥ 200




■ SRPG の戦闘が「殴って終わり」になっていませんか 自軍が敵を攻撃する。ダメージが出る。反撃が返ってくる。……その繰り返しだけだと、マスの上で誰をどこに置くかという「配置の面白さ」が戦闘に出てきません。 攻撃される側にも選択肢があれば、戦闘は駆け引きに変わります。 「反撃する? 防御して耐える? それとも回避に賭ける?」 「隣の味方を呼んで一緒に殴る?」 「前に出て、あの子の代わりに攻撃を受ける?」 このアセットは、その一連の駆け引き——**攻撃 → 受け手のリアクション → 周りの仲間の加勢 → 庇い → 反撃**——を丸ごと引き受けるモジュールです。 ■ できること ●リアクション(反撃・防御・回避) 攻撃を受けた側が行動を選びます。防御なら被ダメージが減り、回避なら相手の命中率が下がり、反撃なら殴り返します。 ●リアクションはデータで増やせます 「反撃/防御/回避」は列挙型ではなく ScriptableObject です。被ダメージ倍率・命中率補正・反撃の有無という 3 つの数字を決めるだけで、「パリィ(被ダメ半減+命中−10+反撃)」のような独自リアクションが **コードを一行も書かずに** 増やせます。ユニットごとに違うリアクション一覧を持たせれば、「重装兵は回避できない」「盾持ちだけがパリィできる」といった差別化もデータだけで表現できます。 ●支援攻撃/支援反撃(最大 4 名) 周囲にいる仲間が加勢します。攻撃側にも防御側にも付き、主攻撃のあと・反撃の列に加わって順番に攻撃します。 ●支援防御=庇い 仲間が前に滑り込み、身代わりになって攻撃を受けます。庇い手には防御リアクションが適用され、**続く支援攻撃も受け切ってから持ち場に戻ります**(主攻撃の直後に戻すと、後続の攻撃が守ったはずの相手へ素通りしてしまうためです)。 ●戻れる選択 リアクション → 反撃手段 → 支援反撃 → 庇い手、と選択が進みます。いつでも 1 つ前に戻れ、**選択肢が無くて自動で飛ばされた段階は、戻るときも飛ばされます**。「キャンセルしたら選べない画面に戻ってしまった」という詰みが起きません。加勢の選択も「仲間を選ぶ → その仲間の武器を選ぶ → 取り消せる」を上限まで繰り返せます。 ●交戦前の予測 誰が誰を何%で殴るのかを一覧で返します。確認パネル・行動予告・AI の損得計算にそのまま使えます。**表示に使う数字と実際に振られる数字は同じ計算から来ている**ので、「80% と出ていたのに当たらない」という食い違いが構造的に起きません。 ●AI の自動編成 庇い手・リアクション・反撃手段・支援反撃を自動で決めます。手で選んだ場合とまったく同じ形(CombatExchange)に落ちるので、敵の連携も味方 NPC の連携もオート戦闘も、以降は同じ経路を通ります。 ■ 導入は 3 ステップ 【1】ユニットに IReactiveUnit を実装する public class MyUnit : MonoBehaviour, IReactiveUnit { public int TeamId => team; // 同じ値どうしが味方 public Vector3Int Cell => cell; // Tilemap 座標でも自前の座標でも可 public bool IsActive => hp > 0; public int AssistRadius => moveRange; // この距離の仲間が加勢できる // …ほか、HP とステータスと攻撃手段を返すだけ public void ApplyDamage(int amount, in AttackOutcome outcome) { hp -= amount; } } 既存のキャラクタークラスを書き換えたくない場合は、薄いアダプタを作って中身を委譲すれば十分です。 【2】交戦を組み立てる var exchange = CombatExchange.Create(attacker, weapon, defender); AssistAutoPlanner.PlanSupportAttacks(exchange, registry, AssistQueryOptions.Default); AssistAutoPlanner.PlanDefense(exchange, registry, AssistQueryOptions.Default, policy, defendReaction); 【3】実行する yield return runner.Run(exchange); 演出を挟まず一瞬で解決したい場合(AI の先読み・オート戦闘・バランス調整)は ExchangePipeline.RunImmediate を呼ぶだけです。同じ順序・同じ計算が使われます。 ■ 既存の戦闘システムを作り直す必要はありません 「もうダメージ計算は自分で作ってある」という方こそ対象です。 IExchangeHitResolver を実装すれば、本アセットの計算式は一切使われません。借りるのは **リアクション・庇い・連携の進行** だけです。 public override AttackOutcome Resolve(in AttackContext context) { int damage = MyCombat.Calculate(context.Attacker, context.Target, context.Option); return new AttackOutcome { IsValid = true, Damage = damage, HitChance = 90 }; } 演出も同様です。攻撃の各手は「まだ確定していない攻撃」として渡され、**着弾の瞬間に Commit() を呼ぶとそこでダメージが確定します**。カメラ・モーション・エフェクトはあなたのゲームのものをそのまま使えます。 ■ 実演シーンを同梱 メニュー 1 クリックでシーンを構築し、再生するだけで 14 場面が字幕付きで自動再生されます(操作不要・無限ループ)。 通常攻撃/反撃/防御(軽減量の表示)/回避(命中率が下がる様子)/支援攻撃/支援反撃/庇い/庇い手が支援攻撃まで受け切る様子/反撃の順序/本体が倒れたときの打ち切り/選択の戻り/加勢の取り消し/独自リアクション/AI 自動編成——を、目で見て確認できます。 デモのソースはそのまま導入コードの見本にもなっています。外部素材はゼロで、図形はコード生成、文字は OS フォント参照です。 ■ 動作環境 ・Unity 2022.3 LTS 以降 ・追加パッケージ不要(DOTween 等の外部プラグインにも依存しません) ・Input System はどちらの設定でも動作します(入力を一切使いません) ・2D / 3D どちらでも動作します ■ 収録内容 ・Runtime(本体)… リアクション定義・交戦の組み立てと進行・連携候補の探索・選択状態機械・AI 自動編成・予測・命中/ダメージ計算・演出差し込み口 ・Samples … 最小構成のコード例 4 本(ユニット実装/武器実装/導入の最短形/選択 UI の例) ・Demo … 実演シーン一式(メニューから自動生成。削除しても本体に影響しません) ・動作確認メニュー … 102 項目の自己診断をその場で実行できます ・README(日本語/英語) ・フルソース付属。改変して組み込めます ■ よくある質問 Q. UI は付いていますか? A. 付いていません。選択の状態機械と、確認パネルに必要な予測データを提供します。ボタンやパネルはご自身のデザインで作ってください(Samples に IMGUI の例があります)。 Q. ヘックスグリッドでも使えますか? A. 距離はマンハッタン距離/チェビシェフ距離から選べます。ヘックスの場合は距離計算を差し替えてください(1 箇所です)。 Q. 移動やターン進行も含まれますか? A. 含まれません。「1 回の交戦」に特化したモジュールです。移動・ターン管理・勝敗判定はご自身のものをお使いください。 Q. 経路探索や射線判定は? A. 含まれません。距離と射程のみを見ます。 Q. ネットワーク対戦に使えますか? A. 同期の仕組みは含まれません。乱数源を差し替えれば決定的に再生できますが、同期はご自身で実装が必要です。 ■ ライセンス 購入者ご自身の商用・非商用プロジェクトでご利用いただけます。アセット単体での再配布・販売はご遠慮ください。



