public static void CylinderCollisionDetectTargetLockedAttack(string attackName, ConfigEntityAttackPattern patternConfig, IAttacker attacker, LayerMask layerMask) { Vector3 xZPosition; CylinderCollisionDetectTargetLocked locked = (CylinderCollisionDetectTargetLocked)patternConfig; if ((attacker.AttackTarget != null) && attacker.AttackTarget.IsActive()) { xZPosition = attacker.AttackTarget.XZPosition; } else { xZPosition = attacker.XZPosition; } List <CollisionResult> results = CollisionDetectPattern.CylinderCollisionDetectBySphere(attacker.XZPosition, xZPosition, locked.Radius * (1f + attacker.Evaluate(locked.RadiusRatio)), locked.Height, layerMask); TestAndActHit(attackName, patternConfig, attacker, results); }
public static void FanCollisionDetectAttack(string attackName, ConfigEntityAttackPattern patternConfig, IAttacker attacker, LayerMask layerMask) { FanCollisionDetect detect = (FanCollisionDetect)patternConfig; Vector3 fanCenterPoint = new Vector3(attacker.XZPosition.x, (attacker.XZPosition.y + detect.CenterYOffset) + (!detect.FollowRootNodeY ? 0f : attacker.GetAttachPoint("RootNode").transform.position.y), attacker.XZPosition.z); List <CollisionResult> results = CollisionDetectPattern.MeleeFanCollisionDetectBySphere(fanCenterPoint, detect.OffsetZ, attacker.FaceDirection, detect.Radius * (1f + attacker.Evaluate(detect.RadiusRatio)), detect.FanAngle, detect.MeleeRadius, detect.MeleeFanAngle, layerMask); TestAndActHit(attackName, patternConfig, attacker, results); }