public void InnerResult(int triggerTime, Vector3 forward, Vector3 pos, XSkillData data, IHitHoster hitted = null) { nHotID = triggerTime; if (hitted == null) { pos += XCommon.singleton.VectorToQuaternion(host.Transform.forward) * new Vector3(data.Result[triggerTime].Offset_X, 0, data.Result[triggerTime].Offset_Z); nResultForward = forward; for (int i = 0, max = host.Hits.Length; i < max; i++) { var hit = host.Hits[i]; if (IsHurtEntity(hit, triggerTime)) { continue; } Vector3 dir = hit.RadiusCenter - pos; dir.y = 0; float distance = dir.magnitude; if (distance > hit.Attr.radius) { distance -= hit.Attr.radius; } if (dir.sqrMagnitude == 0) { dir = forward; } dir.Normalize(); if (data.IsInField(triggerTime, pos, forward, hit.RadiusCenter, Vector3.Angle(forward, dir), distance)) { Vector3 vHitDir = data.Result[triggerTime].Affect_Direction == XResultAffectDirection.AttackDir ? (hit.RadiusCenter - pos).normalized : host.Attribute.GetRotateTo(); AddHurtTarget(data, hit, triggerTime); hit.Begin(host, data.Hit[triggerTime], vHitDir, data.Logical.AttackOnHitDown); } } } else { Vector3 vHitDir = data.Result[triggerTime].Affect_Direction == XResultAffectDirection.AttackDir ? hitted.RadiusCenter - pos : host.Attribute.GetRotateTo(); vHitDir.y = 0; vHitDir.Normalize(); hitted.Begin(host, data.Hit[triggerTime], vHitDir, data.Logical.AttackOnHitDown); } }