Rumput tinggi Unity2D

8

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.

Leo
sumber
6
Terkadang Anda perlu bekerja dengan BANYAK objek game, Anda tahu.
Semacam retasan untuk menghindari lebih banyak objek permainan adalah mengganti sprite pemain dengan versi sprite "isInGrass" khusus (contoh sangat kasar di sini ) ketika sedang di rumput dan hanya menggambarnya di atas. Dengan beberapa seni yang bagus dan sedikit transparansi di bagian bawah (untuk membantunya berbaur dengan rumput yang sebenarnya) mungkin terlihat cukup baik.
Christian
Saya memikirkan pendekatan itu tetapi, selain dari semua pekerjaan yang akan membutuhkan (setidaknya kita perlu animasi dua kali untuk setiap aktor), transisi dari luar rumput ke dalam dari skenario lateral (dalam contoh gambar: Baris atas , kolom ketiga), ketika setengah tubuh ada di dalam, dan setengah lainnya di luar, hasilnya akan sangat berantakan.
Leo
2
Kedengarannya seperti topeng atau stensil yang Anda butuhkan. Utas ini berisi beberapa info berguna. Ekstensi ini menunjukkan apa yang saya bicarakan, meskipun saya tidak tahu apakah itu akan melakukan apa yang Anda butuhkan.
1
Ini kedengarannya seperti yang saya cari! Saya harus melakukan riset dan bereksperimen dengannya. Jika saya berhasil membuat sesuatu berfungsi, saya akan mempostingnya sebagai jawaban.
Leo

Jawaban:

1

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 .

Allen
sumber
0

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:

  • Pada pass pertama karakter diberikan secara normal, TETAPI berada di belakang semak-semak.
  • Di pass kedua saya menggambar lagi, menggunakan topeng yang olny menggambar bagian atas karakter, di atas semak-semak.

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.

Leo
sumber
-1

Anda dapat mendeteksi apakah karakter ada di rumput. Kemudian gambarlah hanya karakter setengah atas.

JojololomenPL
sumber
Saya yakin jawaban ini sudah disarankan. Apakah Anda memiliki detail tambahan untuk ditambahkan ke jawaban Anda?
MichaelHouse