CombatHeroActiveState.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
  2. using Fort23.UTool;
  3. using GameLogic.Combat.CombatTool;
  4. using UnityEngine;
  5. namespace GameLogic.Combat.Hero.State
  6. {
  7. public class CombatHeroActiveState : CombatHeroStateBasic
  8. {
  9. private Vector3 stratPos;
  10. private Vector3 endpos;
  11. private float currTime;
  12. private ParticleSystemPool loopFx;
  13. public CombatHeroActiveState(CombatHeroEntity combatHeroEntity) : base(combatHeroEntity)
  14. {
  15. }
  16. protected override void ProEnter()
  17. {
  18. if (combatHeroEntity.IsEnemy)
  19. {
  20. combatHeroEntity.GameObject.SetActive(false);
  21. stratPos = combatHeroEntity.dotPos+CombatController.currActiveCombat.playerHeroEntity.faceDir*100;
  22. endpos = combatHeroEntity.dotPos;
  23. currTime = 0;
  24. GObjectPool.Instance.FetchAsync<ParticleSystemPool>("fx_gw_dunguang_loop.prefab",
  25. delegate(ParticleSystemPool obj)
  26. {
  27. loopFx = obj;
  28. obj.own.transform.position = stratPos;
  29. });
  30. }
  31. else
  32. {
  33. combatHeroEntity.CombatAIBasic.ChangeState(CombatHeroStateType.idle);
  34. }
  35. }
  36. protected override void ProUpdate(float t)
  37. {
  38. currTime += t*1.3f;
  39. loopFx.own.transform.position = Vector3.Lerp(stratPos, endpos, currTime);
  40. if (currTime > 1)
  41. {
  42. combatHeroEntity.GameObject.SetActive(true);
  43. GObjectPool.Instance.FetchAsync<ParticleSystemPool>("fx_gw_dunguang_show.prefab",
  44. delegate(ParticleSystemPool obj)
  45. {
  46. obj.own.transform.position = endpos;
  47. });
  48. GObjectPool.Instance.Recycle(loopFx);
  49. combatHeroEntity.CombatAIBasic.ChangeState(CombatHeroStateType.idle);
  50. }
  51. }
  52. }
  53. }