CombatFightState.cs 2.9 KB

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