PositionRendererSorter.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /*
  2. ------------------- Code Monkey -------------------
  3. Thank you for downloading the Code Monkey Utilities
  4. I hope you find them useful in your projects
  5. If you have any questions use the contact form
  6. Cheers!
  7. unitycodemonkey.com
  8. --------------------------------------------------
  9. */
  10. using UnityEngine;
  11. namespace CodeMonkey.MonoBehaviours {
  12. /*
  13. * Automatically sort a Renderer (SpriteRenderer, MeshRenderer) based on his Y position
  14. * */
  15. public class PositionRendererSorter : MonoBehaviour {
  16. [SerializeField] private int sortingOrderBase = 5000; // This number should be higher than what any of your sprites will be on the position.y
  17. [SerializeField] private int offset = 0;
  18. [SerializeField] private bool runOnlyOnce = false;
  19. private float timer;
  20. private float timerMax = .1f;
  21. private Renderer myRenderer;
  22. private void Awake() {
  23. myRenderer = gameObject.GetComponent<Renderer>();
  24. }
  25. private void LateUpdate() {
  26. timer -= Time.deltaTime;
  27. if (timer <= 0f) {
  28. timer = timerMax;
  29. myRenderer.sortingOrder = (int)(sortingOrderBase - transform.position.y - offset);
  30. if (runOnlyOnce) {
  31. Destroy(this);
  32. }
  33. }
  34. }
  35. public void SetOffset(int offset) {
  36. this.offset = offset;
  37. }
  38. }
  39. }