Для досягнення цього ефекту:
Створіть два сортувальні шари : Земля та Об'єкти .
Нехай ваші дороги, трава та шляхи використовують ґрунтовий шар.
Нехай ваш характер, стіни та будиночки спрайти використовують шар "Об'єкти".
У спрайтів на вашому шарі "Об'єкти" буде потрібно, щоб точка спряження режиму спрайту була "Знизу зліва", "Знизу" або "Знизу вправо". Ви можете вибрати це, вибравши спрайт на вкладці «Проект» та виберіть точку зведення на вкладці «Інспектор», щоб відрегулювати параметри імпорту спрайту .
Для земних спрайтів вам не доведеться турбуватися про зміну їх порядку.
Однак для об'єктів ви можете або змінити порядок сортування Sprite Renderer , або змінити їх transform.position.z
значення. Я рекомендую змінити трансформацію, оскільки поплавці, ймовірно, будуть простішими для перегляду та регулювання під час переміщення персонажа, тоді як зміна порядку сортування може виглядати не так точно в певних ситуаціях, залежно від вимірювань та розмірів ваших об'єктів. на сцені.
В будь-якому випадку потрібен буде якийсь код.
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;
}
}
Для будь-якого способу цього ви в основному говорите спрайту, щоб його індекс Z відповідав його Y-положенню.
Якщо ви приєднаєте цей скрипт до статичного об'єкта (наприклад, до стіни), ви захочете зняти компонент в інспекторі, щоб його Update
метод не називався кожним кадром; його Awake
метод зателефонує SetPosition
один раз, і це все, що вам потрібно.
Але для свого персонажа залиште компонент поставленим галочкою, щоб Update
зателефонувати SetPosition
кожен кадр, що змінить порядок Z персонажа під час переміщення. І під час переміщення, поки кожен спрайт на шарі "Об'єкти" використовує нижню точку зведення, зміна індексу Z під час переміщення забезпечить, щоб ваш персонаж відображався перед або за іншими об'єктами належним чином.
Залежно від налаштування камери, вам може знадобитися помножити нову позицію Z на те, -1
якщо все здається зворотним.
Якщо ви хочете скорегувати індекс Z під час редагування сцени, перевірте ExecuteInEditMode .