DashEffect.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. using Base.Common;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. public class DashEffect : MonoBehaviour
  6. {/*
  7. public bool canHit; //canHit==true的时候造成伤害
  8. public bool isEnemy;
  9. public bool isBoss;
  10. public AttackInfo attackInfo; //冲刺造成的伤害
  11. public List<Character> beHitTriggers = new List<Character>(); //能被冲刺造成伤害的单位
  12. public GameObject rushEffect; //造成伤害时的刀光效果
  13. public float targetY; //刀光的高度
  14. public GameObject aim;
  15. public float offset;
  16. public Character owner;
  17. private bool isInVain; //击中光球,攻击无效
  18. private void Awake()
  19. {
  20. if (!isBoss)
  21. {
  22. if (isEnemy)
  23. {
  24. attackInfo = GetComponentInParent<Enemy>().Attack_summonInfos[0];
  25. }
  26. else
  27. {
  28. attackInfo = GetComponentInParent<Demonic>().Attack_summonInfos[0];
  29. }
  30. }
  31. }
  32. private void Update()
  33. {
  34. if (canHit)
  35. {
  36. for (int i = 0; i < beHitTriggers.Count; i++)
  37. {
  38. DashAttack(beHitTriggers[i]);
  39. }
  40. beHitTriggers = new List<Character>();
  41. }
  42. }
  43. private void OnTriggerEnter(Collider other)
  44. {
  45. Photosphere photosphere = other.GetComponentInParent<Photosphere>();
  46. if (photosphere)
  47. {
  48. isInVain = true;
  49. photosphere.Reflex(owner.beHitTrigger, attackInfo.damage);
  50. return;
  51. }
  52. //作为己方冲刺可检测enemy
  53. BeHitTrigger beHitTrigger = other.GetComponent<BeHitTrigger>();
  54. if(beHitTrigger!=null&& Util.CheckCanHit(owner.tag, beHitTrigger.owner.tag))
  55. {
  56. if (isEnemy && beHitTrigger.owner.tag == "Player" && isInVain)
  57. {
  58. return;
  59. }
  60. Character character = other.GetComponentInParent<Character>();
  61. if (!beHitTriggers.Exists(t => t == character))
  62. {
  63. beHitTriggers.Add(character);
  64. }
  65. }
  66. }
  67. private void OnTriggerExit(Collider other)
  68. {
  69. //作为己方冲刺可检测enemy
  70. BeHitTrigger beHitTrigger = other.GetComponent<BeHitTrigger>();
  71. if (beHitTrigger != null && Util.CheckCanHit(owner.tag, beHitTrigger.owner.tag))
  72. {
  73. Character character = other.GetComponentInParent<Character>();
  74. if (beHitTriggers.Exists(t => t == character))
  75. {
  76. beHitTriggers.Remove(character);
  77. }
  78. }
  79. }
  80. //造成伤害
  81. public void DashAttack(Character character)
  82. {
  83. if(character == null)
  84. {
  85. return;
  86. }
  87. if (character.state == CharacterState.Die)
  88. {
  89. return;
  90. }
  91. PlayerController playerController = character.GetComponent<PlayerController>();
  92. if(playerController!=null && playerController.isBaseBtnOut)
  93. {
  94. return;
  95. }
  96. try
  97. {
  98. character.BeHit(attackInfo.damage, attackInfo.force * attackInfo.attackDir,
  99. attackInfo.changeHurt, attackInfo.repelValue);
  100. if (character.debugAttackFrom)
  101. {
  102. character.DebugAttackFrom(owner.name, attackInfo.damage);
  103. }
  104. }
  105. catch
  106. {
  107. print(character.name);
  108. print(attackInfo);
  109. }
  110. //造成伤害时的刀光效果
  111. if(rushEffect != null)
  112. {
  113. GameObject effect = Instantiate(rushEffect);
  114. effect.transform.position =
  115. Vector3.Lerp(character.transform.position + Vector3.up * targetY * offset,
  116. aim.transform.position, 0.5f);
  117. }
  118. }*/
  119. }