Para alcançar esse efeito:
Crie duas camadas de classificação : Terra e Objetos .
Faça com que seus sprites de estrada, grama e caminho usem a camada do solo.
Faça com que seu personagem, paredes e sprites da casa usem a camada Objetos.
Os sprites na camada Objetos desejam que o ponto de pivô do modo Sprite seja inferior esquerdo, inferior ou inferior direito. Você pode escolher isso selecionando um Sprite na guia Projeto e escolher o ponto de articulação na guia Inspetor para ajustar as configurações de importação do sprite .
Para sprites de solo, você não precisa se preocupar em alterar a ordem deles.
Para objetos, no entanto, você pode alterar a ordem de classificação do Renderizador do Sprite ou alterar seu transform.position.z
valor. Eu recomendo alterar a transformação, pois os flutuadores provavelmente serão mais fáceis de ver e ajustar à medida que você move seu personagem, enquanto alterar a ordem de classificação pode não parecer tão preciso em determinadas situações, dependendo das medidas e tamanhos dos seus objetos em cena.
Nos dois casos, será necessário algum 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;
}
}
De qualquer maneira, basicamente você está dizendo ao sprite para que seu índice Z corresponda à posição Y.
Se você anexar esse script a um objeto estático (como uma parede), desmarque o componente no Inspector para que seu Update
método não seja chamado de todos os quadros; seu Awake
método chamará SetPosition
uma vez e é tudo o que você precisa.
Mas para o seu personagem, deixe o componente marcado para que todos os quadros Update
sejam chamados SetPosition
, o que mudará a ordem Z do personagem à medida que você se move. E à medida que você se move, desde que todos os sprites na camada Objetos estejam usando um ponto de articulação Inferior, a alteração do índice Z à medida que você se move garantirá que seu personagem apareça na frente ou atrás de outros objetos adequadamente.
Dependendo da configuração da câmera, talvez seja necessário multiplicar a nova posição Z -1
se as coisas parecerem inversas.
Se você deseja ajustar o índice Z enquanto edita sua Cena, confira ExecuteInEditMode .
Awake
. Obrigado