BladeGunHurt.cs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. using System;
  2. using System.Collections;
  3. using UnityEngine;
  4. public class BladeGunHurt : EnemyBaseHurt
  5. {
  6. protected override void Update()
  7. {
  8. base.Update();
  9. Vector2? vector = this.atkFollowPos;
  10. if (vector != null)
  11. {
  12. Vector3 position = base.player.transform.position;
  13. Vector2? vector2 = this.atkFollowPos;
  14. Vector3 position2 = position - ((vector2 == null) ? default(Vector3) : (Vector3)vector2.GetValueOrDefault());
  15. position2.y = Mathf.Clamp(position2.y, LayerManager.YNum.GetGroundHeight(base.gameObject) + 1f, float.PositiveInfinity);
  16. position2.z = LayerManager.ZNum.MMiddleE(this.eAttr.rankType);
  17. base.transform.position = position2;
  18. this.atkFollowTime += Time.unscaledDeltaTime;
  19. if (this.atkFollowTime >= this.atkFollowEnd)
  20. {
  21. this.atkFollowPos = null;
  22. }
  23. }
  24. }
  25. protected override void Init()
  26. {
  27. this.anim = base.GetComponent<BladeGunAnimEvent>();
  28. this.defaultAnimName = "Hit1";
  29. this.defaultAirAnimName = "HitToFly2";
  30. this.hurtData = SingletonMono<EnemyDataPreload>.Instance.hurt[EnemyType.霰弹利刃];
  31. }
  32. public override void SetHitSpeed(Vector2 speed)
  33. {
  34. if (this.playerAtkName == "UpRising" || this.playerAtkName == "AtkUpRising" || this.playerAtkName == "AtkRollEnd" || this.playerAtkName == "NewExecute2_1")
  35. {
  36. this.anim.maxFlyHeight = 4.5f;
  37. }
  38. else
  39. {
  40. this.anim.maxFlyHeight = -1f;
  41. }
  42. base.SetHitSpeed(speed);
  43. }
  44. protected override void SpAttack()
  45. {
  46. if (this.eAttr.currentActionInterruptPoint < this.eAttr.actionInterruptPoint)
  47. {
  48. return;
  49. }
  50. if (this.playerAtkName == "RollEnd")
  51. {
  52. Vector2? vector = this.atkFollowPos;
  53. if (vector != null)
  54. {
  55. this.atkFollowPos = null;
  56. }
  57. return;
  58. }
  59. if (this.playerAtkName == "RollGround")
  60. {
  61. Vector2? vector2 = this.atkFollowPos;
  62. if (vector2 == null)
  63. {
  64. Transform transform = base.player.GetComponentInChildren<PlayerAtk>().transform;
  65. this.atkFollowPos = new Vector2?((transform.position - base.transform.position) * 0.9f);
  66. }
  67. this.atkFollowTime = 0f;
  68. this.atkFollowEnd = 0.2f;
  69. return;
  70. }
  71. if (this.playerAtkName == "RollReady" || this.playerAtkName == "BladeStormReady")
  72. {
  73. Vector2? vector3 = this.atkFollowPos;
  74. if (vector3 == null)
  75. {
  76. this.atkFollowPos = new Vector2?((base.player.transform.position - base.transform.position) * 0.7f);
  77. }
  78. this.atkFollowTime = 0f;
  79. this.atkFollowEnd = 0.2f;
  80. return;
  81. }
  82. if (this.playerAtkName == "Atk4")
  83. {
  84. base.StartCoroutine(this.CloseToPlayer());
  85. return;
  86. }
  87. this.atkFollowTime = 0f;
  88. this.atkFollowEnd = 0f;
  89. }
  90. private IEnumerator CloseToPlayer()
  91. {
  92. this.closeToPlayer.state.SetAnimation(0, "Show", false);
  93. this.closeToPlayer.skeleton.SetToSetupPose();
  94. Vector3 endPos = base.player.transform.position + Vector3.right * (float)base.pAttr.faceDir * UnityEngine.Random.Range(0.8f, 1.5f);
  95. endPos.z = LayerManager.ZNum.MMiddleE(this.eAttr.rankType);
  96. Vector3 startPos = base.transform.position;
  97. for (int i = 0; i < 5; i++)
  98. {
  99. yield return new WaitForFixedUpdate();
  100. }
  101. for (int j = 0; j < 6; j++)
  102. {
  103. base.transform.position = Vector3.Lerp(startPos, endPos, (float)j / 5f);
  104. yield return new WaitForFixedUpdate();
  105. }
  106. yield break;
  107. }
  108. protected override void PlayHurtAudio()
  109. {
  110. base.PlayHurtAudio();
  111. if (base.PlaySpHurtAudio())
  112. {
  113. R.Audio.PlayEffect(401, new Vector3?(base.transform.position));
  114. }
  115. }
  116. protected override void ExecuteFollow()
  117. {
  118. }
  119. protected override void ExecuteDie()
  120. {
  121. base.ExecuteDie();
  122. this.eAttr.timeController.SetGravity(1f);
  123. this.SetHitSpeed(Vector2.zero);
  124. this.action.AnimChangeState(BladeGunAction.StateEnum.Die, 1f);
  125. }
  126. public override void EnemyDie()
  127. {
  128. if (this.deadFlag)
  129. {
  130. return;
  131. }
  132. base.EnemyDie();
  133. this.SetHitSpeed(Vector2.zero);
  134. base.NormalKill();
  135. this.action.AnimChangeState(BladeGunAction.StateEnum.Die, 1f);
  136. base.Invoke("DieTimeControl", 0.12f);
  137. }
  138. private BladeGunAnimEvent anim;
  139. private Vector2? atkFollowPos;
  140. private float atkFollowTime;
  141. private float atkFollowEnd;
  142. [SerializeField]
  143. private SkeletonAnimation closeToPlayer;
  144. }