BaGua_LiGua.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class BaGua_LiGua : MonoBehaviour
  5. {
  6. public float intervalTime; //造成伤害的间隔时间
  7. public int damage; //造成的伤害
  8. public List<MoveCharacter> moveCharacrters = new List<MoveCharacter>(); //被造成伤害的角色
  9. public float totalTime; //多少时间后消失
  10. [HideInInspector]public float time; //经过的时间
  11. private void Update()
  12. {
  13. time += Time.deltaTime;
  14. if (time >= totalTime)
  15. {
  16. gameObject.SetActive(false);
  17. }
  18. }
  19. private void OnTriggerEnter(Collider other)
  20. {
  21. BeHitTrigger beHitTrigger = other.GetComponent<BeHitTrigger>();
  22. if (beHitTrigger != null)
  23. {
  24. if (other.gameObject.layer == 8 || other.gameObject.layer == 16 || other.gameObject.layer == 10)
  25. {
  26. MoveCharacter character = other.GetComponentInParent<MoveCharacter>();
  27. moveCharacrters.Add(character);
  28. character.sustainedInjuryTime = intervalTime;
  29. character.sustainedInjury_IntervalTime = intervalTime;
  30. character.sustainedInjury_damage = damage;
  31. character.isSustainedInjury = true;
  32. }
  33. }
  34. }
  35. private void OnTriggerExit(Collider other)
  36. {
  37. BeHitTrigger beHitTrigger = other.GetComponent<BeHitTrigger>();
  38. if (beHitTrigger != null)
  39. {
  40. if (other.gameObject.layer == 8 || other.gameObject.layer == 16)
  41. {
  42. MoveCharacter character = other.GetComponentInParent<MoveCharacter>();
  43. if (moveCharacrters.Exists(i => i == character))
  44. {
  45. character.isSustainedInjury = false;
  46. moveCharacrters.Remove(character);
  47. }
  48. }
  49. }
  50. }
  51. private void OnDisable()
  52. {
  53. for(int i= 0; i < moveCharacrters.Count; i++)
  54. {
  55. moveCharacrters[i].isSustainedInjury = false;
  56. }
  57. }
  58. }