S901002.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. using System.Collections.Generic;
  2. using Common.Combat.FxAILogic;
  3. using Core.Triiger;
  4. using UnityEngine;
  5. namespace GameLogic.Combat.Skill.MagicSkill
  6. {
  7. /// <summary>
  8. /// 法宝技能 翡翠葫芦 战场区域形成一个域。敌人的功法弹道进入域后将降低敌人的功法弹道速度
  9. /// </summary>
  10. public class S901002 : MagicSkillBasic, ITriggerEntity
  11. {
  12. private List<FxAILogicBasic> _fxAILogicBasics = new List<FxAILogicBasic>();
  13. private float _currTime;
  14. private bool _update;
  15. private IUnRegister _unRegister;
  16. private IUnRegister _unRegisterExitEvent;
  17. protected override void ProMagicUseSkill()
  18. {
  19. SpecialDotInfo specialDotInfo = CombatHeroEntity.GetSpecialDotInfo("lingyu");
  20. _unRegister = specialDotInfo.targetTran.gameObject.OnTriggerEnterEvent(this, OnTriggerEnter);
  21. _currTime = 0;
  22. _update = true;
  23. _unRegisterExitEvent= specialDotInfo.targetTran.gameObject.OnTriggerExitEvent(this, OnTriggerExitEvent);
  24. }
  25. private void OnTriggerExitEvent(Collider collider, ITriggerEntity triggerEntity)
  26. {
  27. if (triggerEntity == null)
  28. {
  29. return;
  30. }
  31. FxAILogicBasic fxAILogicBasic = triggerEntity as FxAILogicBasic;
  32. if (fxAILogicBasic != null && fxAILogicBasic.CombatHeroEntity.IsEnemy != CombatHeroEntity.IsEnemy)
  33. {
  34. fxAILogicBasic.extraMoveSpeed += SelfSkillConfig.effectValue[0];
  35. }
  36. }
  37. private void OnTriggerEnter(Collider collider, ITriggerEntity triggerEntity)
  38. {
  39. if (triggerEntity == null)
  40. {
  41. return;
  42. }
  43. FxAILogicBasic fxAILogicBasic = triggerEntity as FxAILogicBasic;
  44. if (fxAILogicBasic != null && fxAILogicBasic.CombatHeroEntity.IsEnemy != CombatHeroEntity.IsEnemy)
  45. {
  46. fxAILogicBasic.extraMoveSpeed -= SelfSkillConfig.effectValue[0];
  47. }
  48. }
  49. protected override void MagicSkillUpdate(float time)
  50. {
  51. if (_update)
  52. {
  53. _currTime += time;
  54. if (_currTime >= SelfSkillConfig.effectValue[1])
  55. {
  56. Finish();
  57. }
  58. }
  59. }
  60. private void Finish()
  61. {
  62. _unRegister?.UnRegister();
  63. _unRegisterExitEvent?.UnRegister();
  64. _unRegisterExitEvent = null;
  65. _unRegister = null;
  66. _update = false;
  67. SkillPlayFinish();
  68. for (int i = 0; i < _fxAILogicBasics.Count; i++)
  69. {
  70. _fxAILogicBasics[i].extraMoveSpeed += SelfSkillConfig.effectValue[0];
  71. }
  72. _fxAILogicBasics.Clear();
  73. }
  74. public string tag { get; }
  75. }
  76. }