Pour obtenir cet effet:
Créez deux couches de tri : Sol et Objets .
Demandez à vos sprites de route, d'herbe et de chemin d'utiliser la couche Ground.
Demandez à votre personnage, à vos murs et à vos sprites maison d'utiliser le calque Objets.
Les sprites sur votre calque d'objets voudront que leur point de pivot en mode sprite soit en bas à gauche, en bas ou en bas à droite. Vous pouvez le choisir en sélectionnant une image-objet dans votre onglet Projet, puis en choisissant le point de pivot dans l'onglet Inspecteur pour ajuster les paramètres d'importation de l'image-objet .
Pour les sprites au sol, vous n'aurez pas à vous soucier de changer leur ordre.
Pour les objets, cependant, vous pouvez soit changer l' ordre de tri de leur Sprite Renderer , soit changer leur transform.position.z
valeur. Je recommanderais de changer la transformation, car les flotteurs seront probablement plus faciles à regarder et à ajuster lorsque vous déplacez votre personnage, tandis que changer l'ordre de tri peut ne pas sembler aussi précis dans certaines situations, selon les mesures et les tailles de vos objets dans la scène.
Dans les deux cas, un code sera nécessaire.
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;
}
}
Dans les deux cas, vous dites au sprite que son index Z correspond à sa position Y.
Si vous attachez ce script à un objet statique (comme un mur), vous voudrez décocher le composant dans l'inspecteur afin que sa Update
méthode ne soit pas appelée à chaque image; sa Awake
méthode appellera SetPosition
une fois et c'est tout ce dont vous avez besoin.
Mais pour votre personnage, laissez le composant coché afin que chaque image soit Update
appelée SetPosition
, ce qui changera l'ordre Z du personnage lorsque vous vous déplacerez. Et lorsque vous vous déplacez, tant que chaque image-objet du calque Objets utilise un point de pivot inférieur, la modification de l'index Z lorsque vous vous déplacez garantira que votre personnage apparaît devant ou derrière d'autres objets de manière appropriée.
Selon la configuration de votre caméra, vous devrez peut-être multiplier la nouvelle position Z par -1
si les choses semblent en arrière.
Si vous souhaitez ajuster l'index Z lors de la modification de votre scène, consultez ExecuteInEditMode .