Aby osiągnąć ten efekt:
Utwórz dwie warstwy sortowania : Grunt i Obiekty .
Niech duszki z drogi, trawy i ścieżki korzystają z warstwy gruntu.
Niech twoja postać, ściany i duszki domowe korzystają z warstwy Przedmioty.
Duszki na twojej warstwie obiektów będą chciały, aby ich punkt obrotu w trybie duszka znajdował się albo u dołu po lewej, u dołu lub u dołu po prawej. Możesz to wybrać, wybierając duszka na karcie Projekt i wybierz punkt obrotu na karcie Inspektor, aby dostosować ustawienia importu duszka .
W przypadku duszek naziemnych nie musisz się martwić o zmianę ich kolejności.
W przypadku obiektów możesz jednak zmienić kolejność sortowania ich Renderera lub zmienić ich transform.position.z
wartość. Polecam zmianę transformacji, ponieważ pływaki będą prawdopodobnie łatwiejsze do oglądania i dostosowywania podczas przesuwania postaci, podczas gdy zmiana kolejności sortowania może nie wyglądać tak precyzyjnie w niektórych sytuacjach, w zależności od wymiarów i rozmiarów twoich obiektów na scenie.
W obu przypadkach potrzebny będzie jakiś kod.
public class SpritePositionSetter : MonoBehaviour {
void Awake () {
SetPosition();
}
void Update () {
SetPosition();
}
void SetPosition () {
// If you want to change the transform, use this
Vector3 newPosition = transform.position;
newPosition.z = transform.position.y;
transform.position = newPosition;
// Or if you want to change the SpriteRenderer's sorting order, use this
GetComponent<SpriteRenderer>().sortingOrder = (int)transform.position.y;
}
}
Dla każdego z tych sposobów w zasadzie mówisz duszka, aby jego indeks Z pasował do pozycji Y.
Jeśli podłączysz ten skrypt do obiektu statycznego (takiego jak ściana), będziesz chciał odznaczyć komponent w Inspektorze, aby jego Update
metoda nie była nazywana każdą ramką; jego Awake
metoda zadzwoni SetPosition
raz i to wszystko, czego potrzebujesz.
Ale dla swojej postaci pozostaw zaznaczony element, Update
aby wywoływał SetPosition
każdą ramkę, co zmieni kolejność Z postaci podczas poruszania się. I kiedy się poruszasz, tak długo, jak każda duszka na warstwie obiektów używa dolnego punktu obrotu, zmiana indeksu Z podczas ruchu zapewni, że twoja postać pojawi się odpowiednio przed innymi obiektami lub za nimi.
W zależności od konfiguracji aparatu może być konieczne pomnożenie nowej pozycji Z przez, -1
jeśli wszystko wydaje się odwrócone.
Jeśli chcesz dostosować indeks Z podczas edycji sceny, sprawdź ExecuteInEditMode .