CombatUpdateState.cs 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. using GameLogic.Combat.CombatTool;
  2. using GameLogic.Combat.Hero;
  3. using UnityEngine;
  4. namespace GameLogic.Combat.CombatState
  5. {
  6. public class CombatUpdateState : CombatStateBasic
  7. {
  8. public CombatUpdateState(CombatController combatController) : base(combatController)
  9. {
  10. }
  11. protected override void ProEnter()
  12. {
  13. CombatController.CombatCameraControllder.isStop = false;
  14. CombatController.IsFightState = false;
  15. CombatHeroEntity playerHeroEntity = CombatController.currActiveCombat.CombatHeroController.playerHeroEntity;
  16. if (playerHeroEntity != null)
  17. {
  18. playerHeroEntity.CombatAIBasic.ChangeState(CombatHeroStateType.Flight);
  19. }
  20. CombatController.MagicWeaponCombatSence.CloseSecene();
  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("fight");
  35. return;
  36. }
  37. float add = 0.1f;
  38. Vector3 pos = Vector3.zero;
  39. Vector3 dir = Vector3.zero;
  40. float fx = 1;
  41. pos = CombatController.currActiveCombat.CombatSenceController.Move(30*t);
  42. float lt = CombatController.currActiveCombat.CombatSenceController.currTime - 0.01f;
  43. Vector3 p = CombatController.currActiveCombat.CombatSenceController.GetTarget(lt);
  44. dir = (pos - p).normalized;
  45. playerHeroEntity.combatHeroGameObject.SetPosition(pos);
  46. playerHeroEntity.GameObject.transform.rotation = Quaternion.LookRotation(dir * fx);
  47. CombatController.CombatHeroController.Update(t);
  48. CombatController.CombatCameraControllder.Update(t);
  49. CombatController.GameTimeLineParticleFactory.CombatUpdate(t);
  50. }
  51. protected IHero FindMinDixtance(CombatHeroEntity[] allHero)
  52. {
  53. IHero minDistanceHero = null;
  54. if (allHero == null)
  55. {
  56. return null;
  57. }
  58. CombatHeroEntity playerHeroEntity = CombatController.currActiveCombat.CombatHeroController.playerHeroEntity;
  59. float minDistance = float.MaxValue;
  60. for (int i = 0; i < allHero.Length; i++)
  61. {
  62. CombatHeroEntity hero = allHero[i];
  63. if (hero.GetMainHotPoin<CombatHeroHitPoint>() == null)
  64. {
  65. continue;
  66. }
  67. float distance = Vector3.SqrMagnitude(hero.combatHeroGameObject.position -
  68. playerHeroEntity.combatHeroGameObject.position);
  69. if (distance < minDistance && distance < 225f)
  70. {
  71. // if (!_combatHeroEntity.IsEnemy || distance < _combatHeroEntity.CurrCombatHeroInfo.maxDisTo + 100)
  72. {
  73. minDistance = distance;
  74. minDistanceHero = hero;
  75. }
  76. }
  77. }
  78. return minDistanceHero;
  79. }
  80. }
  81. }