MagicWeaponMoveState.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. using Core.Triiger;
  2. using GameLogic.Combat.CombatTool;
  3. using UnityEngine;
  4. namespace GameLogic.Combat.Hero.State
  5. {
  6. /// <summary>
  7. /// 再空中飞来飞去撞的时候
  8. /// </summary>
  9. public class MagicWeaponMoveState : CombatHeroStateBasic
  10. {
  11. private CombatMagicWeaponEntity myCombatMagicWeaponEntity;
  12. private float speed = 5;
  13. private IUnRegister OnTriggerEnterEvent;
  14. public MagicWeaponMoveState(CombatHeroEntity combatHeroEntity) : base(combatHeroEntity)
  15. {
  16. myCombatMagicWeaponEntity = combatHeroEntity as CombatMagicWeaponEntity;
  17. }
  18. protected override void ProEnter()
  19. {
  20. OnTriggerEnterEvent= myCombatMagicWeaponEntity.GameObject.OnTriggerEnterEvent(OnTriggerEnter);
  21. }
  22. private void OnTriggerEnter(Collider collider)
  23. {
  24. HeroEntityMono heroEntityMono= collider.GetComponent<HeroEntityMono>();
  25. if (heroEntityMono == null|| heroEntityMono.combatHeroEntity!= myCombatMagicWeaponEntity.CollidingTarget)
  26. {
  27. return;
  28. }
  29. //碰到了要撞的敌人
  30. }
  31. protected override void ProUpdate(float t)
  32. {
  33. if (myCombatMagicWeaponEntity.CollidingTarget == null)
  34. {
  35. CombatMagicWeaponEntity combatMagicWeaponEntity =
  36. CombatController.currActiveCombat.MagicWeaponCombatSence.FindCollidingTarget(
  37. myCombatMagicWeaponEntity);
  38. myCombatMagicWeaponEntity.CollidingTarget = combatMagicWeaponEntity;
  39. }
  40. CombatMagicWeaponEntity currCollidingTarget = myCombatMagicWeaponEntity.CollidingTarget;
  41. if (currCollidingTarget == null) //没有可碰撞的法宝了
  42. {
  43. return;
  44. }
  45. if (!currCollidingTarget.isCombatState) //如果目标已经激活了,那么就直接攻击
  46. {
  47. return;
  48. }
  49. // _currPos=
  50. Vector3 newDir = (currCollidingTarget.dotPos - myCombatMagicWeaponEntity.dotPos).normalized;
  51. Vector3 dir = Vector3.Lerp(myCombatMagicWeaponEntity.faceDir, newDir, 0.1f);
  52. dir.Normalize();
  53. Vector3 movePos = dir * speed * t;
  54. Vector3 _currPos = myCombatMagicWeaponEntity.dotPos;
  55. _currPos += movePos;
  56. myCombatMagicWeaponEntity.combatHeroGameObject.SetPosition(_currPos);
  57. myCombatMagicWeaponEntity.GameObject.transform.rotation = Quaternion.LookRotation(dir);
  58. }
  59. protected void ActiveHero()
  60. {
  61. }
  62. protected override void ProExit()
  63. {
  64. OnTriggerEnterEvent.UnRegister();
  65. }
  66. public override bool IsUpdateLockTarget()
  67. {
  68. return false;
  69. }
  70. protected override void ProDispose()
  71. {
  72. }
  73. }
  74. }