Libgdx столкновение разрыв - PullRequest
0 голосов
/ 13 октября 2018

¨

Я создаю игру с боковым скроллером в Libgdx, и я только что реализовал обнаружение столкновений, но когда я сталкиваюсь с объектом, между игроком и блоком возникает разрыв.Если игрок находится на левой стороне TiledMap, то при столкновении с правой стороны будет пробел, и если он находится на правой стороне TiledMap (около 100 плиток справа), будет пробел, еслиигрок сталкивается с левой стороной.Вот мой метод обнаружения столкновений:

   public boolean doesRectCollideWithMap(float x, float y, int width, int height) {
   if (x < 0 || y < 0 || x + width > getPixelWidth() || y + height > getPixelHeight())
        return true;

    for (int row = (int) (y / TileType.TILE_SIZE); row < Math.ceil((y + height) / TileType.TILE_SIZE); row++) {
        for (int col = (int) (x / TileType.TILE_SIZE); col < Math.ceil((x + width) / TileType.TILE_SIZE); col++) {
            for (int layer = 0; layer < getLayers(); layer++) {
                TileType type = getTileTypeByCoordinate(layer, col, row); //Gets a tile by its coordinate
                if (type != null && type.isCollidable())
                    return true;
            }
        }
    }

    return false;
}

Это используется в моем суперклассе Entity, который:

    protected void moveX(float amount){
    float newX = this.pos.x + amount;
    if(!map.doesRectCollideWithMap(newX, pos.y, getWidth(), getHeight())){
        this.pos.x = newX;
    }
}

Есть идеи, как это исправить?

...