Tengo un juego de tipo corredor infinito 2D cuyo fondo cambia constantemente de color. Mientras tanto, el color de las plataformas se mantiene igual. De esta manera, las plataformas en algún momento (cuando su color es el mismo que el del fondo) se vuelven "invisibles" para el jugador.
¿Cómo puedo evitar de manera creativa, breve y conveniente este problema con la unidad?
PD: Intenté agregarle material brillante, pero no funcionó .
Como se trata de un corredor infinito, supongo que los colores de fondo se generan de forma procesal. No estoy seguro de su algoritmo, pero tome esa salida de color y limite su rango.
Simplemente podría excluir los colores de su plataforma como una posible opción de color de fondo (pero el fondo podría ser un poco diferente y difícil de diferenciar). Por ejemplo: IF backColor = platformColor THEN GetNextBackgroundColor (). También podría crear una función 'IsColorSimilar (color1, color2)' para esto, pero más difícil.
Use una lista de colores de fondo válidos conocidos, y recorra el ciclo.
Tener diferentes 'estilos' de color para ambos. Su plataforma puede ser brillante y alegre, y limitar sus colores de fondo a colores desaturados. Debe alejarse de la forma tradicional RBG de representar colores y pasar a un modelo como HSL.
Un gran complemento de Unity para trabajar con colores es ColorTools. Cuesta $ 10, pero vale la pena. https://www.assetstore.unity3d.com/en/#!/content/21966
Tiene métodos para generar colores para lo que está buscando, como Desaturate () para desaturar el color de fondo generado e IsSimilar () para verificar si los dos colores están demasiado cerca el uno del otro.
Puede encontrar otra funcionalidad similar de forma gratuita en otras bibliotecas en la red con un poco de búsqueda.
fuente