Saya punya masalah yang rumit. Saya tidak yakin bagaimana cara mengatasi yang terbaik: Saya punya ubin pintu animasi. Ketika ditutup itu harus disortir satu arah, tetapi ketika itu openend itu harus disortir dengan cara yang berbeda, karena itu milik yang berbeda (ubin tetangga).
Ini pintunya tertutup:
dan pintu terbuka:
Saya membayangkan akan mungkin untuk mengesampingkan sistem penyortiran untuk ubin tersebut dan menyesuaikan penyortiran berdasarkan bingkai, tetapi rasanya agak berantakan.
Adakah yang mengalami skenario serupa? Ada solusi elegan?
Jawaban:
Mungkin Anda bisa membuat pintu dari dua benda, di ubin yang berbeda, dan hanya menunjukkan salah satunya saja. Dengan cara ini, pintu yang terbuka mungkin menghalangi gerakan juga, yang tampaknya agak realistis.
sumber
Buat tiga sprite ...
Saat pintu ditutup, gambar sprite 1, dan perlakukan itu sebagai "pemblokir" sehingga pemain tidak bisa berjalan melewatinya.
Ketika pintu dibuka, ganti sprite itu dengan # 2 (hanya tiang pintu). Kemudian tempatkan sprite # 3 (hanya pintu) di sel yang berdekatan dengan pintu itu.
Penutupan hanya melepas pintu, dan mengganti pos dengan pos + pintu dalam posisi tertutup.
Dengan pengaturan ini, Anda tidak perlu khawatir tentang merender pintu yang terbuka dalam urutan khusus apa pun. Buat saja dalam urutan seperti objek lain di dalam kotak itu.
Kelemahannya adalah Anda tidak dapat memiliki pemain atau benda lain di alun-alun tempat pintu yang terbuka akan terbuka.
sumber
Ada 2 trik yang saya gunakan untuk menyortir dalam 2D:
Tambahkan posisi tanah ke sprite, ini adalah titik di mana sprite menyentuh tanah (misalnya kaki, batang pohon, bingkai pintu) dan mengurutkannya alih-alih piksel sprite. Dengan cara ini sprite tidak akan terpengaruh oleh animasi
Tambahkan objek anak-anak yang tidak dapat disortir (misalnya pria dapat memiliki beberapa anak yang tidak mempengaruhi penyortiran - jubah, busur, pedang, dll, kusen pintu memiliki pintu anak). Dengan cara ini animasi sprite anak tidak memengaruhi penyortiran juga.
sumber
Cara terbaik untuk menyelesaikan pemilahan objek adalah dengan tidak memilah sama sekali. Jika Anda menggunakan penyangga kedalaman, Anda dapat merender semuanya dalam satu lintasan. Objek yang memiliki nilai z lebih tinggi akan lebih jauh dari objek dengan nilai z lebih rendah.
Bahkan jika gim Anda 2D, Anda tetap harus mempertimbangkan menggunakan koordinat 3D dengan penyangga kedalaman, jika tidak, Anda akan selamanya bersinggungan dengan algoritme pelukis .
sumber