Feb-11-2020, 06:44 PM
(Feb-10-2020, 07:23 PM)nilamo Wrote: Could you share the Tiled map file?
It looks like they're being rendered in the right order, there's just a missing offset, and the number of tiles per row is off. I'm not sure if that info is available in the file itself, or if it needs to be calculated, and I'd like to play around with it.
Although it is already in my first post in this thread, here you go, in it's full version. (Not meant mean!
![Smile Smile](https://python-forum.io/images/smilies/smile.png)
NOTE: Some of the information in there is not necessary for the map to load (I think):
import pygame as pg import pytmx from settings import * def collide_hit_rect(one, two): return one.hit_rect.colliderect(two.rect) class TiledMap: def __init__(self, filename): tm = pytmx.load_pygame(filename, pixelalpha=True) self.width = tm.width * tm.tilewidth self.height = tm.height * tm.tileheight 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: surface.blit(tile, (x * self.tmxdata.tilewidth, y * self.tmxdata.tileheight)) def make_map(self): temp_surface = pg.Surface((self.width, self.height)) self.render(temp_surface) return temp_surface class Camera: def __init__(self, width, height): self.camera = pg.Rect(0, 0, width, height) self.width = width self.height = height def apply(self, entity): return entity.rect.move(self.camera.topleft) def apply_rect(self, rect): return rect.move(self.camera.topleft) def update(self, target): x = -target.rect.centerx + int(WIDTH / 2) y = -target.rect.centery + int(HEIGHT / 2) # limit scrolling to map size x = min(0, x) # left y = min(0, y) # top x = max(-(self.width - WIDTH), x) # right y = max(-(self.height - HEIGHT), y) # bottom self.camera = pg.Rect(x, y, self.width, self.height)Hope you can figure out my problem now. Thanks for your help!
![Smile Smile](https://python-forum.io/images/smilies/smile.png)