RoleDodge.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. /// <summary>
  5. /// 角色状态 闪避
  6. /// </summary>
  7. public class RoleDodge : MonoBehaviour
  8. {
  9. /// <summary>
  10. /// 击退的时间
  11. /// </summary>
  12. private float mPushTime = 0.5f;
  13. /// <summary>
  14. /// 击退的方向
  15. /// </summary>
  16. private Vector3 mDir = Vector3.zero;
  17. /// <summary>
  18. /// 移动速度
  19. /// </summary>
  20. private float mSpeed = 3;
  21. /// <summary>
  22. /// 延迟更新
  23. /// </summary>
  24. private float mLateUpdat = 0.15f;
  25. private Role role = null;
  26. // <summary>
  27. /// 击退
  28. /// </summary>i
  29. /// <param name="r">角色</param>
  30. /// <param name="dir">方向</param>
  31. public void Init(Role r, Vector3 dir, float speedf)
  32. {
  33. role = r;
  34. mSpeed = speedf;
  35. role.mInvincible = true;
  36. mLateUpdat = 0.15f;
  37. mDir = dir;
  38. mDir.y = 0;
  39. }
  40. /// <summary>
  41. /// 更新
  42. /// </summary>
  43. public void FixedUpdate()
  44. {
  45. mLateUpdat -= Time.fixedUnscaledDeltaTime;
  46. if (mLateUpdat > 0)
  47. {
  48. return;
  49. }
  50. mPushTime -= Time.fixedUnscaledDeltaTime;
  51. if (mPushTime >= 0)
  52. {
  53. role.mNavMeshAgent.velocity = mDir * mSpeed;
  54. }
  55. else
  56. {
  57. role.mInvincible = false;
  58. Destroy(this);
  59. }
  60. }
  61. }