Saya menggunakan Unity untuk membuat game top-down 2D. Semuanya sudah sangat bagus sejauh ini, tetapi saya telah menemukan masalah yang gagal saya pecahkan dengan benar.
Saya ingin menerapkan "area rumput tinggi" di mana bagian dari karakter akan tersumbat.
Contoh visual:
Saya berpikir tentang membuat rumput tinggi demi lapis, tapi itu akan membuat BANYAK objek permainan, dan transisi saat karakter bergerak tidak akan cukup mulus.
Ada ide tentang bagaimana saya bisa mendekati ini? Saya berpikir bahwa mungkin menggunakan shader saya bisa mencapai sesuatu seperti ini, tetapi pengetahuan saya tentang shader sangat terbatas, jadi saya bahkan tidak tahu apakah hal itu mungkin.
Jawaban:
Saya setuju dengan @Christian (meskipun saya tidak akan menyebutnya hack). Mendeteksi kondisi ketika objek harus terlihat berbeda dan kemudian menggambarnya dengan berbeda. Setiap hal dalam gim tidak harus menjadi "model" cara kerjanya di "alam". Itu kesalahan yang saya buat berkali-kali dan itu menjadi mantra bagi saya. Tanyakan pada diri Anda sendiri: apa yang akan Anda dapatkan dengan menyumbat pemain "realistis", bukan hanya menggambar pemain seperti yang seharusnya? Saya menempatkan ini dalam tanda kutip, karena dalam mencoba membayangkan seperti apa ini kelihatannya saya pikir pendekatan oklusi berlapis mungkin benar-benar terlihat lebih rendah.
Jika kekhawatiran Anda dengan pendekatan @ Christian dalam mengelola daftar hal-hal kecil yang "berpotensi tidak terbatas" Anda harus memeriksa setiap frame, ini adalah kesalahan lain yang saya buat berkali-kali. Saya sarankan Anda "ikuti saja" untuk saat ini dan secara berkala periksa berapa lama daftar itu sebenarnya telah diperoleh - dan apakah itu benar-benar menjadi masalah . Satu dari dua hal akan terjadi. Entah itu tidak menjadi masalah, dalam hal ini - mengapa Anda mencoba menyelesaikannya? Atau sudah dan Anda perlu merekayasa solusi (minimal) untuk menyelesaikannya. Jangan mencoba menyelesaikannya dengan mensimulasikannya .
sumber
Saya akhirnya menemukan solusi yang memuaskan! Komentar @Thebluefish menunjuk saya ke arah yang benar dengan topeng.
Idenya adalah menggunakan shader yang menggambar karakter dalam dua lintasan:
Ini dilakukan bahkan ketika obrolan tidak ada di dalam semak-semak. Dengan cara ini saya tidak perlu mendeteksi tabrakan terhadap semak-semak, dan juga membuat transisi di dalam semak halus pada kasus batas seperti ini:
Setengah dari karakter yang berada di luar semak diterjemahkan di pass pertama. Setengah lainnya akan sepenuhnya tersumbat oleh semak-semak.
Pada pass kedua karakter bertopeng akan diberikan lagi. Bagian di luar semak-semak akan tetap sama, tetapi bagian di dalam semak-semak akan diberikan di atas dengan topeng di atas semak-semak, menjadikannya seperti di dalam semak-semak.
sumber
Anda dapat mendeteksi apakah karakter ada di rumput. Kemudian gambarlah hanya karakter setengah atas.
sumber