Как генерировать цвета непохожие друг на друга?

В моей игре на поле генерируются шарики разных цветов.
5dcd76e1d406a382570061.jpeg

Цвет каждому шарику задаётся с помощью простой функции:

Color RandomColor()
    {
        float r = (float)mRandom.GetRandomNumber(0, 1f);
        float g = (float)mRandom.GetRandomNumber(0, 1f);
        float b = (float)mRandom.GetRandomNumber(0, 1f);
        float a = (float)mRandom.GetRandomNumber(0.7, 1);
        return new Color(r, g, b, a);
    }


Игроки жалуются на то что иногда шарики слишком похожи по цвету и их не отличить.
5dcd779bccf4e471308672.png

Я знал об этом и считал что это добавляет игре интереса, но игроки считают иначе и их это очень бесит. Как мне изменить функцию таким образом чтобы исключить подобные ситуации? Будет ли эффективно сравнивать rgba значения шариков и в случае близких значений генерировать цвет заново?
  • Вопрос задан
  • 191 просмотр
Решения вопроса 1
GavriKos
@GavriKos Куратор тега Unity
1) Самое примитивное - пресеты цветов. И выбирать уже из массива пресетов.
2) Попробовать использовать HSL вместо RGB. Во первых "похожие" цвета в нем легче детектить, во вторых легче получить более разные цвета - просто параметр H генерить с каким то шагом, а не весь диапазон от 0 до 1.

А зачем вы рандомите альфу? )
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
devalone
@devalone
̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
Имхо, лучше для генерации использовать HSV(hue, saturation, value), генерируя цвета с сильно отличающимися Hue
Ответ написан
Комментировать
DanielMcRon
@DanielMcRon
C# && Unity
Может сделать список, где-то ~30 цветов , и из него на рандом будет браться шарик
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы