Para lograr este efecto:
Crea dos capas de clasificación : Suelo y Objetos .
Haga que sus sprites de camino, hierba y sendero usen la capa Ground.
Haga que su personaje, paredes y sprites de la casa usen la capa Objetos.
Los sprites en la capa de Objetos querrán que su Punto de pivote del modo Sprite sea Inferior izquierdo, Inferior o Inferior derecho. Puede elegir esto seleccionando un Sprite dentro de la pestaña Proyecto, y elija el punto de pivote en la pestaña Inspector para ajustar la configuración de importación del sprite .
Para los sprites terrestres, no tendrá que preocuparse por cambiar su orden.
Sin embargo, para los objetos, puede cambiar el orden de clasificación de su Sprite Renderer o cambiar su transform.position.z
valor. Recomiendo cambiar la transformación, ya que los flotadores probablemente serán más fáciles de ver y ajustar a medida que mueves tu personaje, mientras que cambiar el orden de clasificación puede no parecer tan preciso en ciertas situaciones, dependiendo de las medidas y tamaños de tus objetos en la escena.
En cualquier caso, se necesitará algún código.
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;
}
}
Para cualquier forma de hacer esto, básicamente le estás diciendo al sprite que haga que su índice Z coincida con su posición Y.
Si adjunta este script a un objeto estático (como un muro), desmarque el componente en el Inspector para que su Update
método no se llame cada cuadro; su Awake
método llamará SetPosition
una vez y eso es todo lo que necesita.
Pero para tu personaje, deja el componente marcado para que Update
llame a SetPosition
cada cuadro, lo que cambiará el orden Z del personaje a medida que te mueves. Y a medida que te mueves, siempre que cada sprite de la capa Objetos use un punto de pivote Inferior, cambiar el índice Z a medida que te mueves asegurará que tu personaje aparezca delante o detrás de otros objetos adecuadamente.
Dependiendo de la configuración de su cámara, es posible que deba multiplicar la nueva posición Z por -1
si las cosas parecen estar al revés.
Si desea ajustar el índice Z mientras edita su escena, consulte ExecuteInEditMode .