Per ottenere questo effetto:
Crea due livelli di ordinamento : Terra e Oggetti .
Chiedi agli sprite di strada, erba e percorso di utilizzare lo strato Terra.
Chiedi al tuo personaggio, alle pareti e agli sprite di casa di usare il livello Oggetti.
Gli sprite sul livello Oggetti vorranno che il loro punto di rotazione della modalità Sprite sia in basso a sinistra, in basso o in basso a destra. Puoi scegliere questo selezionando uno Sprite nella scheda Progetto e scegliere il punto di articolazione nella scheda Ispettore per regolare le impostazioni di importazione dello sprite .
Per gli sprite di terra, non dovrai preoccuparti di cambiare il loro ordine.
Per gli oggetti, tuttavia, è possibile modificare l' ordine di ordinamento del loro Sprite Renderer o modificarne il transform.position.z
valore. Consiglierei di cambiare la trasformazione, poiché i galleggianti saranno probabilmente più facili da guardare e regolare mentre sposti il tuo personaggio, mentre cambiare l'ordine di classificazione potrebbe non sembrare così preciso in determinate situazioni, a seconda delle misure e delle dimensioni dei tuoi oggetti nella scena.
In entrambi i casi, sarà necessario del codice.
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;
}
}
In entrambi i modi, in pratica stai dicendo allo sprite di avere il suo indice Z corrispondente alla sua posizione Y.
Se colleghi questo script a un oggetto statico (come un muro), ti consigliamo di deselezionare il componente in Inspector in modo che il suo Update
metodo non venga chiamato ogni frame; il suo Awake
metodo chiamerà SetPosition
una volta ed è tutto ciò di cui hai bisogno.
Ma per il tuo personaggio, lascia il componente spuntato in modo che Update
chiamerà SetPosition
ogni fotogramma, il che cambierà l'ordine Z del personaggio mentre ti muovi. E mentre ti muovi, fintanto che ogni sprite sul livello Oggetti utilizza un punto di rotazione Inferiore, cambiando l'indice Z mentre ti sposti assicurerai che il tuo personaggio appaia davanti o dietro altri oggetti in modo appropriato.
A seconda della configurazione della fotocamera, potrebbe essere necessario moltiplicare la nuova posizione Z -1
se le cose sembrano all'indietro.
Se vuoi regolare l'indice Z mentre modifichi la scena, dai un'occhiata a ExecuteInEditMode .