SetZAxisByPlayerInCollision.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using System;
  2. using ExtensionMethods;
  3. using UnityEngine;
  4. [RequireComponent(typeof(Collider2D))]
  5. public class SetZAxisByPlayerInCollision : BaseBehaviour
  6. {
  7. public void Awake()
  8. {
  9. this._zOrigin = base.transform.localPosition.z;
  10. }
  11. public void OnTriggerEnter2D(Collider2D collision)
  12. {
  13. if (!collision.CompareTag("Player"))
  14. {
  15. return;
  16. }
  17. if (!this._out)
  18. {
  19. this._zOrigin = base.transform.localPosition.z;
  20. base.transform.localPosition = base.transform.localPosition.SetZ(this._z);
  21. }
  22. else
  23. {
  24. base.transform.localPosition = base.transform.localPosition.SetZ(this._zOrigin);
  25. }
  26. }
  27. public void OnTriggerExit2D(Collider2D collision)
  28. {
  29. if (!collision.CompareTag("Player"))
  30. {
  31. return;
  32. }
  33. if (!this._out)
  34. {
  35. base.transform.localPosition = base.transform.localPosition.SetZ(this._zOrigin);
  36. }
  37. else
  38. {
  39. this._zOrigin = base.transform.localPosition.z;
  40. base.transform.localPosition = base.transform.localPosition.SetZ(this._z);
  41. }
  42. }
  43. private float _zOrigin;
  44. [Header("需要设置的 LocalPosition z")]
  45. [SerializeField]
  46. private float _z;
  47. [Header("离开碰撞区域设值")]
  48. [SerializeField]
  49. private bool _out;
  50. }