CombatFightState.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. using GameLogic.Combat.CombatTool;
  2. using GameLogic.Combat.Hero;
  3. using UnityEngine;
  4. namespace GameLogic.Combat.CombatState
  5. {
  6. public class CombatFightState : CombatStateBasic
  7. {
  8. public CombatFightState(CombatController combatController) : base(combatController)
  9. {
  10. }
  11. protected override void ProEnter()
  12. {
  13. CombatHeroEntity playerHeroEntity = CombatController.currActiveCombat.CombatHeroController.playerHeroEntity;
  14. CombatController.CombatCameraControllder.SetPos(playerHeroEntity.combatHeroGameObject.transform);
  15. CombatController.CombatCameraControllder.isStop = true;
  16. CombatController.IsFightState = true;
  17. }
  18. protected override void ProExit()
  19. {
  20. CombatController.CombatCameraControllder.isStop = false;
  21. }
  22. protected override void ProUpdate(float t)
  23. {
  24. CombatHeroEntity playerHeroEntity = CombatController.currActiveCombat.CombatHeroController.playerHeroEntity;
  25. if (playerHeroEntity == null)
  26. {
  27. return;
  28. }
  29. CombatHeroEntity[] allHero =
  30. CombatController.currActiveCombat.CombatHeroController.GetHero(true);
  31. IHero ihero = FindMinDixtance(allHero);
  32. if (ihero == null)
  33. {
  34. CombatController.ChangeState("update");
  35. return;
  36. }
  37. CombatController.CombatHeroController.Update(t);
  38. CombatController.CombatCameraControllder.Update(t);
  39. CombatController.GameTimeLineParticleFactory.CombatUpdate(t);
  40. }
  41. protected IHero FindMinDixtance(CombatHeroEntity[] allHero)
  42. {
  43. IHero minDistanceHero = null;
  44. if (allHero == null)
  45. {
  46. return null;
  47. }
  48. CombatHeroEntity playerHeroEntity = CombatController.currActiveCombat.CombatHeroController.playerHeroEntity;
  49. float minDistance = float.MaxValue;
  50. for (int i = 0; i < allHero.Length; i++)
  51. {
  52. CombatHeroEntity hero = allHero[i];
  53. if (hero.GetMainHotPoin<CombatHeroHitPoint>() == null)
  54. {
  55. continue;
  56. }
  57. float distance = Vector3.SqrMagnitude(hero.combatHeroGameObject.position -
  58. playerHeroEntity.combatHeroGameObject.position);
  59. if (distance < minDistance&& distance < 500)
  60. {
  61. // if (!_combatHeroEntity.IsEnemy || distance < _combatHeroEntity.CurrCombatHeroInfo.maxDisTo + 100)
  62. {
  63. minDistance = distance;
  64. minDistanceHero = hero;
  65. }
  66. }
  67. }
  68. return minDistanceHero;
  69. }
  70. }
  71. }