CombatFightState.cs 3.0 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. CombatReportManager.Instance.AddCombatReportInfo(playerHeroEntity);
  20. }
  21. protected override void ProExit()
  22. {
  23. CombatController.CombatCameraControllder.isStop = false;
  24. }
  25. protected override void ProUpdate(float t)
  26. {
  27. CombatHeroEntity playerHeroEntity = CombatController.currActiveCombat.playerHeroEntity;
  28. if (playerHeroEntity == null)
  29. {
  30. return;
  31. }
  32. CombatHeroEntity[] allHero =
  33. CombatController.currActiveCombat.CombatHeroController.GetHero(true);
  34. IHero ihero = FindMinDixtance(allHero);
  35. if (ihero == null)
  36. {
  37. CombatController.ChangeState("update");
  38. return;
  39. }
  40. CombatController.CombatHeroController.Update(t);
  41. CombatController.CombatCameraControllder.Update(t);
  42. CombatController.GameTimeLineParticleFactory.CombatUpdate(t);
  43. }
  44. protected IHero FindMinDixtance(CombatHeroEntity[] allHero)
  45. {
  46. IHero minDistanceHero = null;
  47. if (allHero == null)
  48. {
  49. return null;
  50. }
  51. CombatHeroEntity playerHeroEntity = CombatController.currActiveCombat.playerHeroEntity;
  52. float minDistance = float.MaxValue;
  53. for (int i = 0; i < allHero.Length; i++)
  54. {
  55. CombatHeroEntity hero = allHero[i];
  56. if (hero.GetMainHotPoin<CombatHeroHitPoint>() == null)
  57. {
  58. continue;
  59. }
  60. float distance = Vector3.SqrMagnitude(hero.combatHeroGameObject.position -
  61. playerHeroEntity.combatHeroGameObject.position);
  62. if (distance < minDistance&& distance < 500)
  63. {
  64. // if (!_combatHeroEntity.IsEnemy || distance < _combatHeroEntity.CurrCombatHeroInfo.maxDisTo + 100)
  65. {
  66. minDistance = distance;
  67. minDistanceHero = hero;
  68. }
  69. }
  70. }
  71. return minDistanceHero;
  72. }
  73. }
  74. }