Проблема с прозрачными плитками с Tiled и pytmx в Pygame - PullRequest
1 голос
/ 02 марта 2020

Я не могу заставить pytmx правильно визуализировать прозрачные плитки из Tiled в pygame. В этом примере вы можете видеть, что плитка, отображаемая из файла tmx, показывает черный фон, я хотел бы, чтобы она отображалась как изображение, отображаемое непосредственно из файла изображения.

Я пытался связываться с .convert() , .convert_alpha() или даже поставить флаг pygame.SCRALPHA, но не повезло.

Вот ссылка для получения ресурсов для воспроизведения примера: https://filebin.net/yvmr5jz04j889mlx

Вот код примера:

import pygame
import pytmx


pygame.init()
gameScreen = pygame.display.set_mode((280, 210))
clock = pygame.time.Clock()

# filling in white to see the lack of alpha
gameScreen.fill((255, 255, 255))

# bliting from tmx file, (the alpha is not recognized)
gameMap = pytmx.load_pygame('test_map.tmx')
for layer in gameMap.visible_layers:
    if isinstance(layer, pytmx.TiledTileLayer):
        for x, y, gid, in layer:
            tile = gameMap.get_tile_image_by_gid(gid)
            if tile:
                gameScreen.blit(tile, (x * gameMap.tilewidth, y * gameMap.tileheight))

# bliting the image directly from pygame (the alpha is correctly recognized)
rock = pygame.image.load('rock.png')
gameScreen.blit(rock, (140, 70))


def game_loop():
    gameExit = False
    while not gameExit:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                gameExit = True
        pygame.display.update()
        clock.tick(30)


game_loop()
pygame.quit()

1 Ответ

2 голосов
/ 02 марта 2020

Нашел решение!

Оказывается, когда я создавал наборы плиток в Tiled, я установил флажок «использовать цвет прозрачности». Мне было трудно понять это, потому что когда я смотрел на свойства набора плиток в Tiled после создания набора плиток, он показал, что цвет прозрачности не был установлен, и прозрачность была учтена в Tiled.

...