Есть некоторые проблемы, с которыми я столкнулся в моей игре на основе шума Perlin. Посмотрите на скриншот ниже.
Белые области, которые вы видите, - это стены, а черные области - для прогулок. Треугольник посередине - это игрок.
Я реализовал физику в этой игре, нарисовав ее на текстуре (белые или черные пиксели), а затем получив ее из процессора.
Однако сейчас я стою с другой проблемой под рукой. Я хочу, чтобы юниты (или крипы, как бы вы их ни называли) постоянно появлялись на краю экрана. Дело в том, что в финальной игре будет «туман войны», который не позволяет игроку видеть это далеко в любом случае.
Я подумал, что смогу просто отсканировать пиксели по краям экрана и посмотреть, является ли их физическая текстура черной, и затем случайным образом появиться там. Однако, если вы еще раз посмотрите на скриншот, есть (в верхнем левом углу) пример, где я не хотел бы, чтобы крипы появлялись (так как они не смогли бы добраться до игрока оттуда) ,
Можно ли каким-то образом заставить GPU определять эти точки появления для меня, или каким-то другим способом? Я думал о создании векторов между предложенной точкой на краю экрана и игроком, а затем следовал за ней каждые 10 вокселей и смотрел, сталкивается ли стена, прежде чем создать там юнит.
Тем не менее, предложенное выше решение может быть слишком загруженным процессором.
Есть предложения по этому вопросу?
Примечание 1 Для порожденных юнитов я не хочу использовать какую-либо форму поиска пути, чтобы избежать столкновений со стенами, поскольку эти юниты бегут к игроку. Следовательно, юниты должны появляться на краю экрана, в месте, где проход по прямой линии к игроку не сталкивался бы ни с какими стенами.