TiledGame, как проверить ближние блоки объемного звучания на столкновение? - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь разработать Tiled 2D-игру на Java. Карта представляет собой сетку, где все плитки имеют размер 48x48 (как и игрок).

Я не хочу перебирать все плитки на карте, чтобы проверить, сталкивается ли игрок. Я пытаюсь заставить игрока проверять только ближайшие блоки, для каждого движения, которое он делает, основываясь на «твердом» логическом флаге из блока.

Проблема, с которой я сталкиваюсь: игрок свободно перемещается. Он может быть между 2 блоками.

Как я могу реализовать этот метод на основе размера блока, позиции игрока и окружающего индекса?

Изображение сценария

Это самое близкое, что я мог получить:

public void checkCollisionWhenMoving() {
   for (int i = (player.y / 48) - 2; i <= 4; i++) {
        for (int j = (player.y / 48)  - 2; j <= 4; ++j) {
            if (blocksMap[i][j].isBlocked()) {
                collisionDetector.checkCollision(player.getCollisionBox(),
                        blocksMap[i][j].getCollisionBox());
            }
        }
    }
}

Я не хочу думать о самом коллизии (коллизии AABB и т. Д.), А просто о том, как зациклить метод коллизии для всех ближайших окружающих блоков.

Если вам нужно больше кода, дайте мне знать.

...