FBXEventExplosion.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. 
  2. using Chronos;
  3. using Cinemachine;
  4. using System.Collections;
  5. using System.Collections.Generic;
  6. using UnityEngine;
  7. namespace AdonGameKit
  8. {
  9. /// <summary>
  10. /// 受击爆炸事件接收
  11. /// </summary>
  12. public class FBXEventExplosion : MonoBehaviour
  13. {
  14. GameObject m_Owner;
  15. Collider m_WeaponCol;
  16. /// <summary>
  17. /// 震屏组件
  18. /// </summary>
  19. CinemachineImpulseSource m_CinemachineImpulseSource;
  20. void Awake()
  21. {
  22. m_WeaponCol = GetComponent<Collider>();
  23. m_CinemachineImpulseSource = GetComponent<CinemachineImpulseSource>();//震屏组件
  24. }
  25. /// <summary>
  26. /// 设置玩家控制类
  27. /// </summary>
  28. /// <param name="owner"></param>
  29. public void SetOwner(GameObject owner)
  30. {
  31. m_Owner = owner;
  32. }
  33. #region ============================================ Animation Event ============================================
  34. /// <summary>
  35. /// 普通攻击开始
  36. /// </summary>
  37. public void OnAttackOn()
  38. {
  39. m_WeaponCol.enabled = true;
  40. }
  41. /// <summary>
  42. /// 普通攻击结束
  43. /// </summary>
  44. public void OnAttackOff()
  45. {
  46. m_WeaponCol.enabled = false;
  47. }
  48. /// <summary>
  49. /// 震屏
  50. /// </summary>
  51. public void OnShake(int lv = 0)
  52. {
  53. if (lv == 0)
  54. {
  55. SetCameraShake(transform.position, 0.8f, 0.1f, 0.2f);
  56. }
  57. else if(lv == 1)
  58. {
  59. SetCameraShake(transform.position, 2f, 0.1f, 0.3f);
  60. }
  61. }
  62. /// <summary>
  63. /// 设置震屏
  64. /// </summary>
  65. /// <param name="pos">震动起始位置</param>
  66. /// <param name="lv">震动等级</param>
  67. /// <param name="shakeTime">震动持续时间</param>
  68. /// <param name="decayTime">衰减时间</param>
  69. public void SetCameraShake(Vector3 pos, float lv, float sustainTime = 0.1f, float decayTime = 0.1f)
  70. {
  71. m_CinemachineImpulseSource.m_ImpulseDefinition.m_AmplitudeGain = lv;
  72. m_CinemachineImpulseSource.m_ImpulseDefinition.m_TimeEnvelope.m_SustainTime = sustainTime;
  73. m_CinemachineImpulseSource.m_ImpulseDefinition.m_TimeEnvelope.m_DecayTime = decayTime;
  74. m_CinemachineImpulseSource.GenerateImpulseAt(pos, Vector3.one);
  75. }
  76. ///// <summary>
  77. ///// 打击移动开始
  78. ///// </summary>
  79. //public void OnHitMoveStart(float force)
  80. //{
  81. // m_Owner.m_Force = force;
  82. //}
  83. ///// <summary>
  84. ///// 打击移动结束
  85. ///// </summary>
  86. //public void OnHitMoveEnd()
  87. //{
  88. // m_Owner.m_Force = 0;
  89. //}
  90. ///// <summary>
  91. ///// 可进入极限闪避
  92. ///// </summary>
  93. //public void OnExtremeDodge(float _time)
  94. //{
  95. // //播放可极限闪避光效
  96. // m_Owner.m_FxManagerAdon.PlayExtermePointEff();
  97. // //设置可进入极限闪避
  98. // m_Owner.m_Hero.SetExtermeTimeZone(_time);
  99. //}
  100. ///// <summary>
  101. ///// 震屏
  102. ///// </summary>
  103. //public void OnShake(int lv = 0)
  104. //{
  105. // if(lv == 0)
  106. // {
  107. // m_Owner.SetCameraShake(m_Owner.transform.position, 1f, 0.2f, 0.7f);
  108. // }
  109. //}
  110. #endregion
  111. }
  112. }