Я создаю игру, используя Pygame и Tiled для разработки карты. Я могу загружать плитки и перетаскивать их на экран. Когда я переворачиваю плитку горизонтально / вращаюсь внутри Tiled и запускаю игру, плитки не вращаются внутри игры.
Поэтому я хотел бы проверить, вращается ли плитка / перевернутая перед тем, как бросить плитку на на экране, и я не уверен, как именно это сделать, или если это вообще возможно, и продолжать использовать плитки без каких-либо поворотов или переворачивания внутри Tiled?
Я читал, что есть флаги, которые вы можете проверить , но на данный момент я тоже не уверен в этом, любая помощь будет большой. Вот класс, используемый для создания карты
import pytmx
class TiledMap:
def __init__(self, filename):
tm = pytmx.load_pygame(filename)
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:
# check for flags first.. ie rotating, flips
# do the neccessary transformations... this part i know
# blit the transformed tile
# if no flags just blit the image
surface.blit(tile, (x * self.tmxdata.tilewidth,
y * self.tmxdata.tileheight))
, как та же самая мозаика, перевернутая горизонтально, появляется внутри Tiled
, как изображение загружается при запуске игра
Хорошо, так что после прочтения Переворачивание плитки , вот что я понял из нее.
Уже есть это из этого бита кода for x, y, gid, in layer:
Высшая тройка биты gid хранят перевернутые состояния.
Говорит, что 32-й бит предназначен для горизонтального переворота. Таким образом, чтобы проверить это, мы делаем h_flipped = gid & (1<<31) # correct?
Но проблема здесь в том, что когда я делаю это, он оценивается в 0
. Распечатка gids дает 1
для непроверенной плитки и 2
для перевернутой плитки, поэтому 2 & (1<<31) # false
Псевдокод был немного запутанным, и, возможно, я неправильно его понял. Таким образом, либо ошибки, которые я получаю, неверны, либо проверка на бит неверна? или оба? Дополнительная помощь приветствуется