Mam 2d nieskończoną grę typu runner, której tło ciągle zmienia kolory. Tymczasem kolor platform pozostaje taki sam. W ten sposób platformy w pewnym momencie (gdy ich kolor jest taki sam jak tła) stają się dla gracza „niewidoczne”.
Jak mogę twórczo, krótko i przekonująco uniknąć tego problemu dzięki jedności?
PS Próbowałem dodać do tego błyszczący materiał, ale to nie działało .
Ponieważ jest to nieskończony biegacz, zakładam, że kolory tła są generowane proceduralnie. Nie jestem pewien twojego algorytmu, ale weź ten kolor i ogranicz jego zasięg.
Możesz po prostu wykluczyć kolor (y) platformy jako możliwą opcję koloru tła (ale tło może być trochę inne i trudne do odróżnienia). Na przykład: JEŻELI backColor = platformColor NASTĘPNIE GetNextBackgroundColor (). Możesz również utworzyć funkcję „IsColorSimilar (color1, color2)”, ale trudniejsze.
Użyj listy znanych prawidłowych kolorów tła i przeglądaj je.
Mają różne style kolorów dla obu. Twoja platforma może być jasna i wesoła, a kolory tła należy ograniczyć do kolorów nasyconych. Musisz odejść od tradycyjnego sposobu przedstawiania kolorów przez RBG i przejść do modelu takiego jak HSL.
Świetnym dodatkiem Unity do pracy z kolorami jest ColorTools. Kosztuje 10 USD, ale warto. https://www.assetstore.unity3d.com/en/#!/content/21966
Ma metody generowania kolorów dla tego, czego szukasz, takie jak Desaturate () do desaturacji wygenerowanego koloru tła i IsSimilar (), aby sprawdzić, czy oba kolory są zbyt blisko siebie.
Możesz znaleźć inne podobne funkcje za darmo w innych bibliotekach w sieci z odrobiną wyszukiwania.
źródło