Итак, мне удалось создать, импортировать и отобразить TileMap 16x16 в моем проекте PyGame. У меня есть слой активов под названием ground и слой Objects, первоначально названный objects .
Скриншот программного обеспечения для плитки с моими слоями
Тогда у меня есть этот простой код для создания моей TileMap:
class TiledMap:
def __init__(self, filename):
tm = pytmx.load_pygame(filename, pixelalpha=True)
self.width = tm.width * TILE_SIZE
self.height = tm.height * TILE_SIZE
self.tmxdata = tm
def render(self, surface):
ti = self.tmxdata.get_tile_image_by_gid
for layer in self.tmxdata.visible_layers:
if isinstance(layer, pytmx.TiledTileLayer):
for x, y, gid, in layer:
tile = ti(gid)
if tile:
tile = pg.transform.scale(tile,(TILE_SIZE,TILE_SIZE))
surface.blit(tile, (x * TILE_SIZE,
y * TILE_SIZE))
def make_map(self):
temp_surface = pg.Surface((self.width, self.height), pg.SRCALPHA).convert_alpha()
self.render(temp_surface)
return temp_surface
РЕДАКТИРОВАТЬ: я забыл сказать, что моя карта 16x16 на самом деле масштабируется до изображения 64x64 (TILE_SIZE), но только для видимый слой земля , я хочу сделать это со слоем объекты .
Это прекрасно работает для масштабирования моего "видимого слоя", который земля . Но когда я рисую коллизии, вы видите, что объекты все еще очень малы и не соответствуют моему новому разрешению карты:
Снимок экрана игры с синим: поле игрока и в желтом: коллайдеры
Как вы можете видеть, хитбоксы стен , которые я установил в моей TileMap, неправильно масштабируются.
Итак, вопрос в том, как масштабировать слой объектов в TileMap с помощью pyTMX?
Спасибо всем.