Существует еще один способ использования сеток для системы столкновений.Я использую более сложную версию предложения Арот и использую ее для исправления ошибок столкновения.
Теоретически эта система является самой быстрой (если вы делаете эту проверку if(Grid[x][y] ==true)
), потому что она использует только одну логическую проверкудля каждой сущности (вещи, которые могут двигаться).
Примечание : В приведенном выше примере проверки сетки я использовал двумерный массив логических значений, который устанавливает координаты непроходимых сеток вfalse.
Если вы не беспокоитесь о физике, такой как отскакивание от стены, вы можете использовать это:
1- Divide the map into grids.
2- Making every entity only fill a tile would be better but not necessary.
3- Store the previous position or the grid of the entities.
4- Whenever an entity moves, before visually updating their location (also before
doing other calculations) check the grids they are in. If they are in grid
that is not empty or simply in a grid that they are not supposed to
be, return their position back to the previous position (which you have stored).
Если вы хотите, чтобы объекты могли свободно перемещаться внутри сетки (сетки)больше минимального расстояния, на которое они могут двигаться), тогда вам нужно поместить их рядом с сетками, в которые они вошли, и они не должны были это делать.В противном случае просто верните их обратно в предыдущую сетку.
Если вы хотите, чтобы они отскакивали от стены, вы все равно можете использовать это, но я не уверен, сколько объектов можно добавить в систему столкновений, подобную этой.