CombatUpdateState.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
  2. using GameLogic.Combat.CombatTool;
  3. using GameLogic.Combat.Hero;
  4. using UnityEngine;
  5. namespace GameLogic.Combat.CombatState
  6. {
  7. public class CombatUpdateState : CombatStateBasic
  8. {
  9. public CombatUpdateState(CombatController combatController) : base(combatController)
  10. {
  11. }
  12. protected override void ProEnter()
  13. {
  14. CombatController.CombatCameraControllder.isStop = false;
  15. CombatController.IsFightState = false;
  16. CombatController.GameTimeLineParticleFactory.RecycleAllFxAiLogicBasic();
  17. CombatHeroEntity playerHeroEntity = CombatController.currActiveCombat.CombatHeroController.playerHeroEntity;
  18. if (playerHeroEntity != null)
  19. {
  20. playerHeroEntity.CombatAIBasic.ChangeState(CombatHeroStateType.Flight);
  21. playerHeroEntity.CurrCombatHeroInfo.Shield = playerHeroEntity.MaxCombatHeroInfo.Shield;
  22. CombatCalculateTool.Instance.Recover(playerHeroEntity,
  23. playerHeroEntity.GetMainHotPoin<CombatHeroHitPoint>(), 999999, AttType.Normal, HarmType.Default,
  24. new TriggerData());
  25. }
  26. CombatController.MagicWeaponCombatSence.CloseSecene();
  27. }
  28. protected override void ProUpdate(float t)
  29. {
  30. CombatHeroEntity playerHeroEntity = CombatController.currActiveCombat.CombatHeroController.playerHeroEntity;
  31. if (playerHeroEntity == null)
  32. {
  33. return;
  34. }
  35. CombatHeroEntity[] allHero =
  36. CombatController.currActiveCombat.CombatHeroController.GetHero(true);
  37. IHero ihero = FindMinDixtance(allHero);
  38. if (ihero != null)
  39. {
  40. CombatController.ChangeState("fight");
  41. return;
  42. }
  43. float add = 0.1f;
  44. Vector3 pos = Vector3.zero;
  45. Vector3 dir = Vector3.zero;
  46. float fx = 1;
  47. pos = CombatController.currActiveCombat.CombatSenceController.Move(30*t);
  48. float lt = CombatController.currActiveCombat.CombatSenceController.currTime - 0.01f;
  49. Vector3 p = CombatController.currActiveCombat.CombatSenceController.GetTarget(lt);
  50. dir = (pos - p).normalized;
  51. playerHeroEntity.combatHeroGameObject.SetPosition(pos);
  52. playerHeroEntity.GameObject.transform.rotation = Quaternion.LookRotation(dir * fx);
  53. CombatController.CombatHeroController.Update(t);
  54. CombatController.CombatCameraControllder.Update(t);
  55. CombatController.GameTimeLineParticleFactory.CombatUpdate(t);
  56. }
  57. protected IHero FindMinDixtance(CombatHeroEntity[] allHero)
  58. {
  59. IHero minDistanceHero = null;
  60. if (allHero == null)
  61. {
  62. return null;
  63. }
  64. CombatHeroEntity playerHeroEntity = CombatController.currActiveCombat.CombatHeroController.playerHeroEntity;
  65. float minDistance = float.MaxValue;
  66. for (int i = 0; i < allHero.Length; i++)
  67. {
  68. CombatHeroEntity hero = allHero[i];
  69. if (hero.GetMainHotPoin<CombatHeroHitPoint>() == null)
  70. {
  71. continue;
  72. }
  73. float distance = Vector3.SqrMagnitude(hero.combatHeroGameObject.position -
  74. playerHeroEntity.combatHeroGameObject.position);
  75. if (distance < minDistance && distance < 225f)
  76. {
  77. // if (!_combatHeroEntity.IsEnemy || distance < _combatHeroEntity.CurrCombatHeroInfo.maxDisTo + 100)
  78. {
  79. minDistance = distance;
  80. minDistanceHero = hero;
  81. }
  82. }
  83. }
  84. return minDistanceHero;
  85. }
  86. }
  87. }