using UnityEngine; public static class AttackResolver { public static void Resolve( AttackContext attackContext, DamageReceiver receiver) { // 攻撃者自身と、その子オブジェクトにはダメージを与えない。 if (receiver.transform == attackContext.Attacker.transform || receiver.transform.IsChildOf( attackContext.Attacker.transform)) return; // Player同士、Enemy同士のような同じ陣営への攻撃は無効にする。 if (IsSameSide( attackContext.Attacker, receiver.gameObject)) return; // 死亡済みなど、ダメージを受けられない状態なら何もしない。 if (!receiver.CanReceiveDamage) return; receiver.ReceiveDamage(attackContext.Damage); } private static bool IsSameSide( GameObject attacker, GameObject receiver) { if (attacker.GetComponentInParent() != null && receiver.GetComponentInParent() != null) return true; if (attacker.GetComponentInParent() != null && receiver.GetComponentInParent() != null) return true; return false; } }