| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 | 
							- using Core.Triiger;
 
- using Fort23.Common;
 
- using Fort23.Core;
 
- using Fort23.UTool;
 
- using GameLogic.Combat.CombatTool;
 
- using UnityEngine;
 
- namespace GameLogic.Combat.Hero
 
- {
 
-     public class ShieldsBarrier : IBarrier
 
-     {
 
-         public ShowBaiscEntity Own { get; set; }
 
-         public BarrierTriggerData BarrierTriggerData { get; set; }
 
-         public GameObjectPool ShieldsFx;
 
-         private ParticleSystem[] allParticleSystem;
 
-         public async CTask Init(ShowBaiscEntity combatHeroEntity)
 
-         {
 
-             Own = combatHeroEntity;
 
-             GameObjectPool combatParticleSystemPool =
 
-                 await GObjectPool.Instance.FetchAsync<GameObjectPool>("fx_hudun", null);
 
-             ShieldsFx = combatParticleSystemPool;
 
-             BarrierEntityMono barrierEntityMono = combatParticleSystemPool.own.GetComponent<BarrierEntityMono>();
 
-             if (barrierEntityMono == null)
 
-             {
 
-                 barrierEntityMono =
 
-                     combatParticleSystemPool.own.AddComponent<BarrierEntityMono>();
 
-             }
 
-             barrierEntityMono.Barrier = this;
 
-             SpecialDotInfo specialDotInfo =
 
-                 combatHeroEntity.GetMainHotPoin<CombatHeroHitPoint>(true).GetSpecialDotInfo("hitpos");
 
-             ShieldsFx.own.transform.SetParent(specialDotInfo.targetTran);
 
-             ShieldsFx.own.transform.localPosition = Vector3.zero;
 
-             ShieldsFx.own.transform.localEulerAngles = Vector3.zero;
 
-             ShieldsFx.own.transform.localScale = Vector3.one * 1.5f;
 
-             ShieldsFx.SetActive(true);
 
-             allParticleSystem = combatParticleSystemPool.own.transform.GetComponentsInChildren<ParticleSystem>();
 
-         }
 
-         public void Play()
 
-         {
 
-             ShieldsFx.ActiveObj();
 
-             for (int i = 0; i < allParticleSystem.Length; i++)
 
-             {
 
-                 allParticleSystem[i].Stop();
 
-                 allParticleSystem[i].Play();
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// 破裂
 
-         /// </summary>
 
-         public async CTask Rupture()
 
-         {
 
-             ParticleSystemPool particleSystemPool =
 
-                 await GObjectPool.Instance.FetchAsync<ParticleSystemPool>("fx_hudun_po", null);
 
-             particleSystemPool.gameObject.transform.position = ShieldsFx.own.transform.position;
 
-         }
 
-         public bool CollideTriiger(ITriggerEntity triggerEntity)
 
-         {
 
-             if (Own.CurrCombatHeroInfo.Shield > 0)
 
-             {
 
-                 return false;
 
-             }
 
-             return true;
 
-         }
 
-         public long Harm(HarmReturnInfo harmReturnInfo)
 
-         {
 
-             Play();
 
-             harmReturnInfo.target.combatHeroEntity.CurrCombatHeroInfo.Shield -= harmReturnInfo.att;
 
-             if (harmReturnInfo.target.combatHeroEntity.CurrCombatHeroInfo.Shield <= 0)
 
-             {
 
-                 Rupture();
 
-             }
 
-             return 0;
 
-         }
 
-         public void Dispose()
 
-         {
 
-             GObjectPool.Instance.Recycle(ShieldsFx);
 
-             allParticleSystem = null;
 
-             ShieldsFx = null;
 
-             Own = null;
 
-         }
 
-     }
 
- }
 
 
  |