Eu tenho um jogo tipo corredor 2d infinito cujo fundo está mudando de cor constantemente. Enquanto isso, a cor das plataformas permanece a mesma. Dessa forma, as plataformas em algum momento (quando a cor é igual à do fundo) tornam-se "invisíveis" para o jogador.
Como posso evitar de forma criativa, rápida e conveniente, esse problema com a unidade?
PS: Tentei adicionar material brilhante a ele, mas não funcionou .
Como esse é um corredor infinito, presumo que as cores de fundo sejam geradas proceduralmente. Não tenho certeza do seu algoritmo, mas pegue essa saída de cor e limite seu alcance.
Você pode simplesmente excluir as cores da sua plataforma como uma possível opção de cor de plano de fundo (mas o plano de fundo pode ser um pouco diferente e difícil de diferenciar). Por exemplo: SE backColor = platformColor THEN GetNextBackgroundColor (). Você pode criar uma função 'IsColorSimilar (color1, color2)' para isso também, mas mais difícil.
Use uma lista de cores de plano de fundo válidas conhecidas e percorra-as.
Tem 'estilos' de cores diferentes para ambos. Sua plataforma pode ser brilhante e alegre e limitar as cores do plano de fundo a cores dessaturadas. Você precisa se afastar da maneira tradicional de representar cores do RBG e mudar para um modelo como HSL.
Um ótimo complemento do Unity para trabalhar com cores é o ColorTools. Custa US $ 10, mas vale a pena. https://www.assetstore.unity3d.com/en/#!/content/21966
Possui métodos para gerar cores para o que você está procurando, como Desaturate () para dessaturar sua cor de plano de fundo gerada e IsSimilar () para verificar se as duas cores estão muito próximas uma da outra.
Você pode encontrar outras funcionalidades semelhantes gratuitamente em outras bibliotecas da rede com um pouco de pesquisa.
fonte