PlayerChaseAbility.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using System;
  2. using ExtensionMethods;
  3. using UnityEngine;
  4. public class PlayerChaseAbility : CharacterState
  5. {
  6. public void Chase()
  7. {
  8. if (R.Player.Enhancement.Chase == 0)
  9. {
  10. return;
  11. }
  12. if (this.stateMachine.currentState.IsInArray(PlayerAction.SpHurtSta) || this.stateMachine.currentState.IsInArray(PlayerAction.HurtSta))
  13. {
  14. return;
  15. }
  16. this._enemy = this.GetChaseEnemy();
  17. if (this._enemy != null)
  18. {
  19. Vector3 position = this._enemy.position;
  20. this.listener.PlayFlashSound();
  21. position.y = Mathf.Clamp(position.y, LayerManager.YNum.GetGroundHeight(this._enemy.gameObject), float.MaxValue);
  22. Transform transform = R.Effect.Generate(182, null, position, default(Vector3), default(Vector3), true);
  23. Vector3 localScale = transform.localScale;
  24. localScale.x = (float)((UnityEngine.Random.Range(0, 2) != 0) ? -1 : 1);
  25. transform.localScale = localScale;
  26. EnemyBaseHurt component = this._enemy.GetComponent<EnemyBaseHurt>();
  27. if (R.Player.Enhancement.Chase != 3)
  28. {
  29. component.ChaseEnd();
  30. }
  31. else if (component.currentChaseTime < 2)
  32. {
  33. component.ChaseStart();
  34. }
  35. else
  36. {
  37. component.ChaseEnd();
  38. }
  39. }
  40. }
  41. private Transform GetChaseEnemy()
  42. {
  43. for (int i = 0; i < R.Enemy.Count; i++)
  44. {
  45. EnemyAttribute enemyAttribute = R.Enemy.EnemyAttributes[i];
  46. if (enemyAttribute.canBeChased)
  47. {
  48. return enemyAttribute.transform;
  49. }
  50. }
  51. return null;
  52. }
  53. private Transform _enemy;
  54. }