Saya memiliki jenis permainan pelari tak terbatas 2d yang latar belakangnya terus berubah warna. Sementara itu warna platform tetap sama. Dengan cara ini platform di beberapa titik (ketika warnanya sama dengan latar belakangnya) menjadi "tidak terlihat" untuk pemain.
Bagaimana saya bisa secara kreatif, singkat dan meyakinkan menghindari masalah ini dengan persatuan?
PS Saya sudah mencoba menambahkan bahan glossy tapi tidak berhasil .
Karena ini adalah pelari tanpa batas, saya menganggap warna latar belakang Anda dihasilkan secara prosedural. Saya tidak yakin tentang algoritme Anda, tetapi ambil output warna itu dan batasi kisarannya.
Anda cukup mengecualikan warna platform Anda sebagai opsi warna latar belakang yang mungkin (tetapi latar belakangnya bisa sedikit berbeda dan sulit dibedakan). Sebagai contoh: JIKA backColor = platformColor KEMUDIAN GetNextBackgroundColor (). Anda dapat membuat fungsi 'IsColorSimilar (color1, color2)' untuk ini juga, tetapi lebih sulit.
Gunakan daftar warna latar belakang yang valid yang diketahui, dan daur ulang.
Memiliki 'gaya' warna yang berbeda untuk keduanya. Platform Anda bisa cerah dan ceria, dan membatasi warna latar belakang Anda ke warna desaturated. Anda harus menjauh dari cara tradisional RBG untuk mewakili warna, dan pindah ke model seperti HSL.
Pengaya Unity yang hebat untuk bekerja dengan warna adalah ColorTools. Harganya $ 10, tetapi sepadan.https://www.assetstore.unity3d.com/en/#!/content/21966
Ini memiliki metode untuk menghasilkan warna untuk apa yang Anda cari, seperti Desaturate () untuk desaturasi warna latar belakang yang Anda hasilkan, dan IsSimilar () untuk memeriksa apakah kedua warna terlalu dekat satu sama lain.
Anda dapat menemukan fungsionalitas serupa lainnya secara gratis di perpustakaan lain di internet dengan sedikit pencarian.
sumber