Để đạt được hiệu quả này:
Tạo hai lớp sắp xếp : Ground và Object .
Có con đường, cỏ và con đường của bạn sử dụng lớp Ground.
Yêu cầu nhân vật, tường và nhà của bạn sử dụng lớp Đối tượng.
Sprites trên lớp Đối tượng của bạn sẽ muốn có Điểm xoay chế độ Sprite của chúng ở dưới cùng bên trái, dưới cùng hoặc dưới cùng bên phải. Bạn có thể chọn điều này bằng cách chọn Sprite trong tab Dự án của bạn và chọn điểm xoay trong tab Thanh tra để điều chỉnh cài đặt nhập của sprite .
Đối với các sprite mặt đất, bạn sẽ không phải lo lắng về việc thay đổi thứ tự của chúng.
Tuy nhiên, đối với các đối tượng, bạn có thể thay đổi thứ tự sắp xếp Sprite Renderer của chúng hoặc thay đổi transform.position.z
giá trị của chúng . Tôi khuyên bạn nên thay đổi biến đổi, vì phao có thể sẽ dễ nhìn và điều chỉnh hơn khi bạn di chuyển nhân vật của mình, trong khi thay đổi thứ tự sắp xếp có thể trông không chính xác trong các tình huống nhất định, tùy thuộc vào số đo và kích thước của các đối tượng của bạn trong hiện trường.
Trong cả hai trường hợp, một số mã sẽ cần thiết.
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;
}
}
Đối với bất kỳ cách nào để làm điều này, về cơ bản, bạn đang nói với sprite có chỉ số Z của nó khớp với vị trí Y của nó.
Nếu bạn đính kèm tập lệnh này vào một đối tượng tĩnh (như tường), bạn sẽ muốn bỏ chọn thành phần trong Thanh tra để Update
phương thức của nó không được gọi là mọi khung; Awake
phương pháp của nó sẽ gọi SetPosition
một lần và đó là tất cả những gì bạn cần.
Nhưng đối với nhân vật của bạn, hãy để thành phần được đánh dấu để Update
sẽ gọi SetPosition
mọi khung hình, điều này sẽ thay đổi thứ tự Z của nhân vật khi bạn di chuyển xung quanh. Và khi bạn di chuyển, miễn là mọi sprite trên lớp Đối tượng đang sử dụng điểm Trục dưới cùng, việc thay đổi chỉ số Z khi bạn di chuyển sẽ đảm bảo nhân vật của bạn xuất hiện trước hoặc sau các đối tượng khác một cách thích hợp.
Tùy thuộc vào thiết lập máy ảnh của bạn, bạn có thể cần nhân vị trí Z mới -1
nếu mọi thứ có vẻ ngược.
Nếu bạn muốn điều chỉnh chỉ số Z trong khi chỉnh sửa Cảnh của mình, hãy xem ExecuteInEditMode .