Untuk mencapai efek ini:
Buat dua lapisan penyortiran : Tanah dan Objek .
Buat sprite jalan, rumput, dan jalur Anda menggunakan lapisan Ground.
Buat karakter, dinding, dan sprite rumah Anda menggunakan lapisan Objects.
Sprite pada layer Objects Anda ingin Spiv Mode Pivot Point mereka berada di Kiri Bawah, Bawah, atau Kanan Bawah. Anda dapat memilih ini dengan memilih Sprite di dalam tab Project Anda, dan pilih pivot point di tab Inspector untuk menyesuaikan pengaturan impor sprite .
Untuk sprite tanah, Anda tidak perlu khawatir mengubah pesanan.
Namun untuk objek, Anda dapat mengubah urutan penyortiran Sprite Renderer mereka , atau mengubah transform.position.z
nilainya. Saya akan merekomendasikan mengubah transformasi, karena mengapung mungkin akan lebih mudah untuk dilihat dan disesuaikan saat Anda memindahkan karakter Anda, sedangkan mengubah urutan penyortiran mungkin tidak terlihat akurat dalam situasi tertentu, tergantung pada pengukuran dan ukuran objek Anda di tempat kejadian.
Dalam kedua kasus, beberapa kode akan diperlukan.
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;
}
}
Untuk kedua cara melakukan ini, Anda pada dasarnya memberitahu sprite agar indeks Z-nya cocok dengan posisi Y-nya.
Jika Anda melampirkan skrip ini ke objek statis (seperti dinding), Anda akan ingin melepaskan komponen di Inspektur sehingga Update
metodenya tidak disebut setiap frame; -nya Awake
metode akan memanggil SetPosition
sekali dan itu semua yang Anda butuhkan.
Tetapi untuk karakter Anda, biarkan komponen terus dicentang Update
akan memanggil SetPosition
setiap frame, yang akan mengubah urutan Z karakter saat Anda bergerak. Dan saat Anda bergerak, selama setiap sprite pada layer Objects menggunakan titik pivot Bawah, mengubah indeks Z saat Anda bergerak akan memastikan karakter Anda muncul di depan atau di belakang objek lain dengan tepat.
Tergantung pada pengaturan kamera Anda, Anda mungkin perlu melipatgandakan posisi Z baru dengan -1
jika semuanya tampak mundur.
Jika Anda ingin menyesuaikan indeks Z saat mengedit adegan Anda, periksa ExecuteInEditMode .
Awake
sebagai gantinya. Terima kasih