MagicWeaponIdleState.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using Common.Utility.CombatEvent;
  2. using Fort23.Core;
  3. using GameLogic.Combat.CombatTool;
  4. using GameLogic.Combat.Hero.State;
  5. using UnityEngine;
  6. namespace GameLogic.Combat.Hero
  7. {
  8. public class MagicWeaponIdleState : CombatHeroStateBasic
  9. {
  10. private CombatMagicWeaponEntity myCombatMagicWeaponEntity;
  11. private Vector3 startPos;
  12. private Vector3 endPos;
  13. private float _addTime;
  14. private float _currTime;
  15. public MagicWeaponIdleState(CombatHeroEntity combatHeroEntity) : base(combatHeroEntity)
  16. {
  17. myCombatMagicWeaponEntity = combatHeroEntity as CombatMagicWeaponEntity;
  18. }
  19. protected override void ProEnter()
  20. {
  21. myCombatMagicWeaponEntity.GameObject.SetActive(true);
  22. startPos = myCombatMagicWeaponEntity.MagicWeaponControl.combatHeroEntity.dotPos;
  23. endPos = CombatController.currActiveCombat.MagicWeaponCombatSence.myEnterCombatPos;
  24. _addTime = 1.0f / (Vector3.Distance(startPos, endPos) / 5);
  25. _currTime = 0;
  26. }
  27. protected override void ProUpdate(float t)
  28. {
  29. _currTime += t * _addTime;
  30. Vector3 pos = Vector3.Lerp(startPos, endPos, _currTime);
  31. myCombatMagicWeaponEntity.combatHeroGameObject.SetPosition(pos);
  32. if (_currTime >= 1)
  33. {
  34. myCombatMagicWeaponEntity.isCombatState = true;
  35. myCombatMagicWeaponEntity.CombatAIBasic.ChangeState(CombatHeroStateType.move);
  36. }
  37. }
  38. protected override void ProExit()
  39. {
  40. }
  41. public override bool IsUpdateLockTarget()
  42. {
  43. return false;
  44. }
  45. protected override void ProDispose()
  46. {
  47. }
  48. }
  49. }