static DamageInfo[] CheckTag(Collider[] cols, UnitInfo causer, bool affectToCauser, float damage, Vector3 damagePoint, params string[] tags)
    {
        List <DamageInfo> damageInfoList = new List <DamageInfo>();

        if (cols != null && cols.Length > 0)
        {
            foreach (Collider tr in cols)
            {
                UnitInfo target = tr.attachedRigidbody.GetComponent <UnitInfo>();
                if (target == null)
                {
                    continue;
                }
                if (!affectToCauser && target == causer)
                {
                    continue;
                }
                foreach (string tag in tags)
                {
                    if (tr.tag == tag)
                    {
                        Vector3 point = tr.ClosestPointOnBounds(damagePoint);
                        if (causer.GiveDamage(target, damage, point))
                        {
                            DamageInfo dInfo;
                            dInfo.hitPoint = point;
                            dInfo.hitUnit  = target;
                            damageInfoList.Add(dInfo);
                        }
                    }
                }
            }
        }
        return(damageInfoList.ToArray());
    }