CombatFightState.cs 2.8 KB

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