Cara menangani pintu animasi di ubin isometrik

10

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:

pintu tertutup

dan pintu terbuka:

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?

George Profenza
sumber
2
Bagaimana sistem sortir Anda saat ini mendeteksi urutan undian ubin?
Roy T.

Jawaban:

4

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.

Lupakan
sumber
4

Buat tiga sprite ...

  1. Pintu tertutup (seperti sprite pertama Anda) - memblokir gerakan
  2. Hanya bingkai (pos dalam kasus Anda) dari pintu, tetapi tidak ada pintu - tidak menghalangi gerakan
  3. Hanya pintu dalam posisi terbuka - menghalangi gerakan

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.

Tim Holt
sumber
3

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.

Kromster
sumber
1

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 .

knight666
sumber
Benar, tetapi bagaimana cara menentukan posisi Z? Hanya dengan menyortir
Kromster
Ya, tetapi penyortiran itu sekarang terjadi offline, alih-alih saat rendering. Sekarang desainer level dapat membangun level dengan nilai-nilai Z dalam pikiran, tanpa harus khawatir tentang kliping objek.
knight666