SceneEventDamagedLogic.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. using UnityGameFramework.Runtime;
  6. /// <summary>
  7. /// 场景 可破坏的
  8. /// </summary>
  9. public class SceneEventDamagedLogic : MonoBehaviour
  10. {
  11. /// <summary>
  12. /// 掉落ID
  13. /// </summary>
  14. public int dropID;
  15. /// <summary>
  16. /// 破坏次数
  17. /// </summary>
  18. public int number = 1;
  19. public int index = 0;
  20. Button btnInteractive;
  21. Collider player;
  22. private void Awake()
  23. {
  24. }
  25. // Start is called before the first frame update
  26. void Start()
  27. {
  28. SceneEventDamaged info = this.gameObject.GetComponent<SceneEventDamaged>();
  29. this.dropID = info.dropID;
  30. this.number = info.number;
  31. SceneCmptManager.Instance.AddDamageCmpt(this.gameObject);
  32. }
  33. public void OnTriggerEnter(Collider collider)
  34. {
  35. if (collider.gameObject.layer != LayerMask.NameToLayer("Player"))
  36. {
  37. return;
  38. }
  39. if (collider.name == "WeaponCollider")
  40. {
  41. return;
  42. }
  43. player = collider;
  44. BattleCanvas battlePanel = UI_BaseMainWindow.Instance().battleCanvas;
  45. GameObject interactive = battlePanel.transform.Find("Main/Buttons/0").gameObject;
  46. interactive.SetActive(true);
  47. btnInteractive = interactive.GetComponent<Button>();
  48. btnInteractive.onClick.AddListener(OnClickInteractive);
  49. //EventTriggerListener.Get(btnInteractive.gameObject).onClick = ((_btn) =>
  50. //{
  51. // ();
  52. //});
  53. // 按键同样能打车
  54. battlePanel.JKeyEvent(OnClickInteractive);
  55. }
  56. public void OnTriggerExit(Collider collider)
  57. {
  58. if(player == null)
  59. {
  60. return;
  61. }
  62. if (player.gameObject.layer != LayerMask.NameToLayer("Player"))
  63. {
  64. return;
  65. }
  66. if (player.name == "WeaponCollider")
  67. {
  68. return;
  69. }
  70. player = null;
  71. btnInteractive.onClick.RemoveListener(OnClickInteractive);
  72. }
  73. public void EnableCollider()
  74. {
  75. }
  76. public void OnClickInteractive()
  77. {
  78. if(this == null)
  79. {
  80. btnInteractive.onClick.RemoveListener(OnClickInteractive);
  81. return;
  82. }
  83. if(player == null)
  84. {
  85. return;
  86. }
  87. if (player.name == "WeaponCollider")
  88. {
  89. return;
  90. }
  91. if (player)
  92. {
  93. player.transform.LookAt(transform);
  94. }
  95. Animator anim = gameObject.GetComponent<Animator>();
  96. if(anim)
  97. {
  98. switch (number)
  99. {
  100. case 3:
  101. anim.Play("hit", 0, 0);
  102. break;
  103. case 2:
  104. anim.Play("hit", 0, 0);
  105. break;
  106. case 1:
  107. anim.Play("destroy", 0, 0);
  108. break;
  109. case 0:
  110. anim.Play("destroy");
  111. btnInteractive.onClick.RemoveListener(OnClickInteractive);
  112. EventComponent e = GameEntry.GetComponent<EventComponent>();
  113. e.FireNow(this, new BattleEventOpenBoxEvt(dropID));
  114. break;
  115. }
  116. }
  117. anim.StartRecording(1);
  118. number -= 1;
  119. if(number <= 0)
  120. {
  121. DropManager.Instance.DropItems(dropID, this.transform.position);
  122. SceneCmptManager.Instance.RemoveDamageCmpt(this.gameObject);
  123. StartCoroutine("AnimationComplete", 2.0f);
  124. Collider col = this.GetComponent<Collider>();
  125. if(col != null)
  126. {
  127. col.enabled = false;
  128. }
  129. }
  130. }
  131. public void AnimationComplete()
  132. {
  133. Destroy(this.gameObject, 2);
  134. }
  135. }