CombatHeroActiveState.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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. if (loopFx != null)
  40. {
  41. loopFx.own.transform.position = Vector3.Lerp(stratPos, endpos, currTime);
  42. }
  43. if (currTime > 1)
  44. {
  45. combatHeroEntity.GameObject.SetActive(true);
  46. GObjectPool.Instance.FetchAsync<ParticleSystemPool>("fx_gw_dunguang_show.prefab",
  47. delegate(ParticleSystemPool obj)
  48. {
  49. obj.own.transform.position = endpos;
  50. });
  51. GObjectPool.Instance.Recycle(loopFx);
  52. combatHeroEntity.CombatAIBasic.ChangeState(CombatHeroStateType.idle);
  53. }
  54. }
  55. }
  56. }