Рендеринг врага - PullRequest
       6

Рендеринг врага

0 голосов
/ 02 марта 2019

Я создаю "игру с плитками" enter image description here

Вопрос, который я хотел бы задать: скажем, моя карта будет 5000 * 5000 плиток, а вывидно, что у меня там уже есть несколько врагов (две красные кучки-слизи: D), проблема в том, что я хотел бы иметь приблизительно одного врага на 500 плиток, поэтому 5000 * 5000/500, что дает около 50000 врагов, которые невозможно отрендерить сразутаким образом, у меня есть объект прямоугольника, который содержит фактический экран, который может видеть игрок, и если поле попадания «слизи» пересекает прямоугольник, то я рендеринг его, но проблема в том, что мне все еще нужно пройтись по каждой из этих слизей, чтобы увидетьнаходится ли их хитбокс в прямоугольнике экрана после перемещения игрока, есть ли у кого-нибудь подобные проблемы?Если да, не могли бы вы сказать мне свое решение?

1 Ответ

0 голосов
/ 03 марта 2019

, но проблема в том, что мне все еще нужно пройтись по каждой из этих слизей, чтобы увидеть, нет ли их хитбокса в прямоугольнике экрана после перемещения игрока,

Цикл по некоторые слизи, когда игрок двигается, нормальны или скорее приемлемы, но циклически проходить через все слизи нет.
Вы, вероятно, должны поддерживать структуру, в которой вы знаете для каждой области плиток врагов, которые присутствуют на.
Область плиток должна собирать определенное количество плиток, но будьте осторожны, вы должны найти / отрегулировать ее размер, чтобы сделать его не слишком маленьким (вы теряете к этому интерес, так как вы должны осмотреть многие из них), а также не слишком большим (Вы будете зациклены на многих врагах, которые могут быть слишком далеко).

Общая идея заключается в том, чтобы проверять присутствие противника только на наличие плитки рядом с игроком.Такая структура, как Map<TilesZone, List<Enemy>>, может иметь смысл или, возможно, TreeMap<TilesZone, List<Enemy>>, чтобы воспользоваться интерфейсом NavigableMap, который может быть полезен в вашем случае использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...