Ich habe ein 2D-Endlos-Runner-Spiel, dessen Hintergrund ständig seine Farben ändert. In der Zwischenzeit bleibt die Farbe der Plattformen gleich. Auf diese Weise werden die Plattformen zu einem bestimmten Zeitpunkt (wenn ihre Farbe mit der des Hintergrunds übereinstimmt) für den Spieler "unsichtbar".
Wie kann ich dieses Problem mit Unity kreativ, kurz und sicher umgehen?
PS Ich habe versucht, glänzendes Material hinzuzufügen, aber es hat nicht funktioniert .
Da dies ein unendlicher Läufer ist, gehe ich davon aus, dass Ihre Hintergrundfarben prozedural generiert werden. Ich bin mir bei Ihrem Algorithmus nicht sicher, nehme aber die Farbausgabe und beschränke den Bereich.
Sie können Ihre Plattformfarbe (n) einfach als mögliche Hintergrundfarbenoption ausschließen (der Hintergrund kann jedoch geringfügig anders und schwer zu unterscheiden sein). Zum Beispiel: WENN backColor = platformColor THEN GetNextBackgroundColor (). Sie könnten auch hierfür eine Funktion 'IsColorSimilar (color1, color2)' erstellen, dies ist jedoch schwieriger.
Verwenden Sie eine Liste bekannter gültiger Hintergrundfarben und blättern Sie durch diese.
Haben Sie unterschiedliche Farbe "Stile" für beide. Ihre Plattform könnte hell und fröhlich sein und Ihre Hintergrundfarben auf entsättigte Farben beschränken. Sie müssen sich von der traditionellen RBG-Methode zur Darstellung von Farben entfernen und zu einem Modell wie HSL wechseln.
Ein großartiges Unity-Add-On für die Arbeit mit Farben ist ColorTools. Es kostet 10 Dollar, ist es aber wert. https://www.assetstore.unity3d.com/en/#!/content/21966
Es verfügt über Methoden zum Generieren von Farben für das, wonach Sie suchen, z. B. Desaturate () zum Entsättigen der generierten Hintergrundfarbe und IsSimilar (), um zu überprüfen, ob die beiden Farben zu nahe beieinander liegen.
Sie können andere ähnliche Funktionen mit ein wenig Suchen kostenlos in anderen Bibliotheken im Internet finden.
quelle