MagicWeaponIdleState.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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. float y= myCombatMagicWeaponEntity.IsEnemy ? 5 : 3;
  24. endPos = startPos+new Vector3(0,y,0);
  25. _addTime = 1.0f / (Vector3.Distance(startPos, endPos) / 10);
  26. _currTime = 0;
  27. }
  28. protected override void ProUpdate(float t)
  29. {
  30. _currTime += t * _addTime;
  31. Vector3 pos = Vector3.Lerp(startPos, endPos, _currTime);
  32. myCombatMagicWeaponEntity.combatHeroGameObject.SetPosition(pos);
  33. if (_currTime >= 1)
  34. {
  35. myCombatMagicWeaponEntity.isCombatState = true;
  36. myCombatMagicWeaponEntity.CombatAIBasic.ChangeState(CombatHeroStateType.move);
  37. }
  38. }
  39. protected override void ProExit()
  40. {
  41. }
  42. public override bool IsUpdateLockTarget()
  43. {
  44. return false;
  45. }
  46. protected override void ProDispose()
  47. {
  48. }
  49. }
  50. }