ESpirits_Assassin.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public enum AssassinState
  5. {
  6. None = -1,
  7. Normal = 0, //正常状态
  8. FindPlayer = 1, //寻找主角位置
  9. Rushing = 2, //向主角方向冲刺中
  10. }
  11. public class ESpirits_Assassin : MonoBehaviour
  12. {
  13. public float time = 5;
  14. public float attackCD;
  15. public AssassinState state;
  16. public Enemy enemy;
  17. private void Update()
  18. {
  19. if (enemy.floatState == 0)
  20. {
  21. OnState();
  22. }
  23. switch (enemy.state)
  24. {
  25. case CharacterState.Die:
  26. this.enabled = false;
  27. break;
  28. case CharacterState.FinishRush:
  29. state = AssassinState.Normal;
  30. break;
  31. default:
  32. break;
  33. }
  34. }
  35. public void OnState()
  36. {
  37. switch (state)
  38. {
  39. case AssassinState.Normal:
  40. time += Time.deltaTime;
  41. if (time > attackCD)
  42. {
  43. time = 0;
  44. enemy.ChangeState(CharacterState.FindPlayer);
  45. state = AssassinState.FindPlayer;
  46. }
  47. break;
  48. case AssassinState.FindPlayer:
  49. if(enemy.state == CharacterState.Idle)
  50. {
  51. enemy.ChangeState(CharacterState.FindPlayer);
  52. }
  53. if (enemy.isFindPlayer)
  54. {
  55. enemy.ChangeState(CharacterState.ReadyToRush);
  56. state = AssassinState.Rushing;
  57. }
  58. break;
  59. case AssassinState.Rushing:
  60. if(enemy.state == CharacterState.FindPlayer)
  61. {
  62. enemy.ChangeState(CharacterState.FindPlayer);
  63. }
  64. break;
  65. default:
  66. break;
  67. }
  68. }
  69. }