SceneEventStoneLogic.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityGameFramework.Runtime;
  5. public class SceneEventStoneLogic : MonoBehaviour
  6. {
  7. float _updateTime;
  8. float _countTime;
  9. float oldY;
  10. bool _isAttack;
  11. // Start is called before the first frame update
  12. void Start()
  13. {
  14. _updateTime = 0.3f;
  15. _countTime = 0;
  16. oldY = transform.position.y;
  17. SceneCmptManager.Instance.AddMechanism(this.gameObject);
  18. }
  19. // Update is called once per frame
  20. void Update()
  21. {
  22. _countTime += Time.deltaTime;
  23. if(_countTime > _updateTime)
  24. {
  25. _countTime -= _updateTime;
  26. if(Mathf.Abs(this.transform.position.y - oldY) > 0.01f )
  27. {
  28. _isAttack = true;
  29. }
  30. else
  31. {
  32. _isAttack = false;
  33. }
  34. }
  35. }
  36. public void OnTriggerEnter(Collider collider)
  37. {
  38. if(!_isAttack)
  39. {
  40. return;
  41. }
  42. Role role = collider.GetComponent<Role>();
  43. int layer = LayerMask.NameToLayer("Player");
  44. if (role != null && role.gameObject.layer == layer)
  45. {
  46. role.UpdateHP(-120);
  47. _isAttack = false;
  48. _updateTime = 1000;
  49. SceneCmptManager.Instance.OpenMechanism(this.gameObject);
  50. }
  51. }
  52. public void OnTriggerExit(Collider collider)
  53. {
  54. }
  55. //public void OnTriggerStay(Collider collider)
  56. //{
  57. // LogHelper.Log("--------------------- OnTriggerStay -----------------------");
  58. //}
  59. }