Advertisement
Aulexian

Spriter.cs

Apr 9th, 2021 (edited)
1,173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.20 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5.  
  6. namespace HelpPeople
  7. {
  8.     [System.Serializable] public class Pair //simple mutable "POD-struct"
  9.     {
  10.         public Pair(SpriteRenderer sr, Transform t, float d) { spriteRenderer = sr; transform = t; distance = d;  }
  11.  
  12.         public SpriteRenderer spriteRenderer;
  13.         public Transform transform;
  14.         public float distance;
  15.     }
  16.  
  17.     public class Spriter : MonoBehaviour
  18.     {
  19.         [SerializeField] private List<Pair> renderers;
  20.         [SerializeField] private Camera cam;
  21.  
  22.         private void LateUpdate()
  23.         {
  24.             var camPos = cam.transform.position;
  25.             for(int i = 0; i < renderers.Count; ++i) //just set distance to all before sort
  26.             {
  27.                 Pair current = renderers[i];
  28.                 current.distance = (camPos - current.transform.position).sqrMagnitude;
  29.             }
  30.  
  31.             renderers.Sort((r1, r2) => r1.distance.CompareTo(r2.distance));
  32.  
  33.             for(int i = 0; i < renderers.Count; ++i) //set order in simplest way, one by one
  34.             {
  35.                 renderers[i].spriteRenderer.sortingOrder = i;
  36.             }
  37.         }
  38.     }
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement