Saat ini saya mencoba untuk membuat efek kunang-kunang di hutan yang gelap. Levelnya memiliki cahaya yang sangat rendah dan pemain adalah salah satu dari sedikit sumber cahaya. Agar pemain melihat level lebih baik, saya mencoba membuat kunang-kunang yang bersinar muncul secara acak di peta. Salah satu caranya adalah dengan menggunakan sistem partikel. Tapi aku tidak bisa membuat partikel-partikel itu melemparkan cahaya ke sekelilingnya. Apakah ada cara untuk melakukan ini?
22
Jawaban:
Partikel pemancar cahaya sekarang menjadi fitur Unity bawaan pada 5.5.
Cukup aktifkan Lampu di inspektur partikel, masukkan referensi ke prefab cahaya (lampu titik dan tempat bekerja), dan ubah Rasio ke 1.
Dan voila, partikel yang memancarkan cahaya:
Ternyata, ini adalah pengaturan yang agak dioptimalkan, berjalan pada 1500 + fps di rig saya bahkan dengan lampu maksimum di ratusan.
Sunting: Setelah beberapa pengamatan, tampak bagi saya bahwa lampu partikel beralih antara pencahayaan per fragmen dan pencahayaan vertex (mungkin untuk optimasi?). Ini mungkin menghasilkan sejumlah kecil artefak visual jika lampu maksimum disetel terlalu tinggi.
Sunting2: Seperti yang ditunjukkan oleh DMGregory, artefak adalah produk sampingan dari optimasi rendering maju. Pencahayaan yang ditangguhkan memecahkan masalah ini. Menambahkan gif yang lebih bagus
sumber
Head-Up:
Jawaban ini sudah usang. Persatuan sekarang mendukung partikel titik cahaya secara asli. Silakan lihat jawaban ini untuk perincian lengkap.
Saya akan meninggalkan posting ini di sini untuk siapa pun yang ingin tahu, atau menggunakan Unity versi lama, atau membutuhkan lebih banyak kontrol manual daripada yang ditawarkan metode asli - cukup perhatikan bahwa dukungan asli cenderung jauh lebih efisien dan terukur daripada pendekatan yang disajikan di bawah ini.
Saya tidak yakin mengapa begitu banyak jawaban mengklaim ini sulit atau tidak mungkin. Menangani beberapa lusin lampu titik dinamis cukup konvensional untuk pipa render yang ditangguhkan modern berjalan pada PC.
Berikut adalah contoh cepat yang saya buat:
Saya menggunakan skrip ini untuk secara dinamis memunculkan cukup lampu untuk partikel maks saya (pastikan Anda menyesuaikan pengaturan Sistem Partikel Anda sehingga maks masuk akal - standar 1000 tidak akan membuat kartu grafis Anda sangat bahagia), dan kemudian memperbarui mereka untuk mengikuti aktif partikel:
Sunting: Anda dapat membuat cetakan dengan terlebih dahulu membuat objek game (dalam hal ini, Buat -> Cahaya -> Cahaya Titik), mengaturnya dengan nama / parameter / skrip / anak-anak yang Anda inginkan, kemudian menyeretnya dari Hierarki ke dalam Penjelajah Proyek Anda. Ini menyimpan objek sebagai aset yang dapat Anda gunakan kembali di banyak layar & skrip, dengan tingkat pewarisan. Anda dapat menghapus salinan di adegan Anda dan aset akan tetap di folder Aset Anda untuk direferensikan saat diperlukan.
Pastikan lightPrefab memiliki jangkauan yang relatif kecil dan tidak membayangi, untuk memberi Anda ruang kepala paling berkinerja untuk semua yang terjadi dalam adegan Anda. Anda tidak perlu membuat lightPrefab itu sendiri hijau (atau warna kunang-kunang) - itu akan mengambilnya dari warna partikel.
Anda mungkin menemukan bahwa Anda memiliki kontrol yang lebih baik terhadap penerbangan kunang-kunang jika Anda membuat masing-masing GameObject sendiri, dengan quad billboard dan lampu yang terpasang dengan skrip pergerakan / blinkig kustom, karena mendapatkan penjelajahan yang meyakinkan membutuhkan lebih banyak sistem sistem partikel daripada Aku tahu. ;)
sumber
Bertahun-tahun yang lalu, sebelum lampu dinamis terjangkau, kami hanya akan menggunakan efek partikel 2D-billboarded dengan campuran aditif. Itu akan mencerahkan pemandangan menuju putih. Dengan menggambar dengan kedalaman kunang-kunang yang benar, Anda mendapatkan pemilahan yang hampir benar. Aditif alfa tidak perlu disortir ketika menarik dirinya sendiri dibandingkan dengan alfa blending. Itu tidak akan menerangi SEMUA pemandangan, tetapi itu akan menerangi area di sekitar kunang-kunang. Anda kemudian dapat mengambil cahaya yang dinamis dan memilih salah satu kunang-kunang setiap beberapa detik untuk benar-benar menerangi pemandangan, jika Anda membutuhkannya.
Sudah ada pertanyaan & jawaban tentang efek cahaya. Bagaimana mendapatkan pencahayaan seperti ini di Unity untuk game 2D?
sumber
Sayangnya, saya tidak punya banyak pengalaman dengan Unity dalam bentuknya saat ini (saya bermain-main dengannya bertahun-tahun yang lalu), jadi saya tidak tahu persis set fitur apa yang harus Anda kerjakan di mesin.
Bagaimanapun, tidak peduli mesin apa yang Anda gunakan, lampu dinamis adalah sesuatu yang harus dihindari kapan pun Anda bisa. Mereka sangat mahal secara komputasi, dan cenderung menambah kompleksitas adegan dengan cara yang sangat eksponensial. Namun, seperti urutan hari untuk sebagian besar rendering 3D, ada banyak cara Anda dapat mencapai efek yang sama dengan menipu;
Cara yang mungkin untuk mencapai efek yang sama adalah memetakan tekstur cahaya premade ke medan di bawah kunang-kunang Anda, (dengan asumsi sistem Y = atas / bawah coord.) Dengan posisi X dan Z yang mengendalikan lokasi cahaya pada medan dan offset Y dari medan yang mengendalikan alfa tekstur (lebih terang = lebih dekat ke medan)
Tentu saja ada beberapa kelemahan dari metode ini. Anda tidak akan membuang bayangan karena tidak ada cahaya yang digunakan, dan Anda tidak akan memengaruhi geometri lain di dunia (alat peraga, dedaunan, dll.)
sumber
Gunakan
Light
pada titik asal api dan mainkan dengan ukurannya dalam skrip sehingga akan memberikan efek terbakar. Dan gunakan sistem partikel Anda :)sumber