CombatFightState.cs 2.9 KB

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