问题标签 [pytmx]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1908 浏览

python - 如何在pygame中导入tmx地图?

我在 Tiled Editor 程序中制作了一个 *tmx 地图。然后我尝试将它导入到我的游戏中。当我将变量更改layers0它可以工作时,但屏幕上只有 1 个图块。我想在我的屏幕上打印整个地图。但我收到以下错误。

我认为这与我的层次有关。我的地图只有 1 层。我的脚本仍然不起作用。我的地图也使用 Base64(压缩)。和 32 像素的大图块。

0 投票
1 回答
126 浏览

python - 尝试在 pyTMX 中获取 TileImageByGid 时出现 AttributeError

我正在尝试为 pyGame 中的项目加载 TMX 地图。当我不添加对象时,地图加载正常。我使用 Tiled 创建地图。当我这样做时,我得到一个属性错误。

我尝试重新安装 pytmx 并尝试使用其他地图,但似乎没有任何效果。

它返回以下内容:

0 投票
1 回答
685 浏览

python - 如何使用 pygame/pytmx 加速或优化用于碰撞检测的循环?

我在尝试使用 pygame 制作游戏时使用 for 循环和 .colliderect() 进行碰撞检测,循环变得太慢,约 340 个墙矩形,我想知道它是否可以更快,因为它严重影响游戏循环播放?

我已经尝试在每面墙上的不同位置使用坐标点,但只有当您一次移动一定数量的像素并且每次移动速度减半时,它才会使您保存的坐标点数量增加四倍。

提供的代码可以工作,但是太慢了,我想知道在碰撞检测中是否有不同的方法,或者是否有一种方法可以使显示的内容更快,这会使事情陷入困境。谢谢

编辑:

所以解决方案基本上是我有 load_pygame 每次循环时都会运行,只需取出执行此操作的行,它会清理更多内容,为了进一步优化,更改为每个对象创建一个 Rect 的行,只需使用已经构造的 Rect 列表,这限制了函数调用。

0 投票
1 回答
140 浏览

python - 为什么我收到错误“无法加载外部图块集”

我只想知道如何解决我在标题中提到的错误。

我真的不知道该尝试什么,只有 3 行代码,它们正是 pytmx 文档中显示的方式......

我只想“加载”我创建的地图,而不会出现这个巨大的错误:

如果你能帮助我... 非常感谢你!

0 投票
1 回答
990 浏览

python - 如何在pygame中使瓦片地图滚动?

我使用 pytmx 实现了一个平铺地图,我试图弄清楚如何允许它使用if Keys[pygame.K_somekey]:. 我渲染了一些按钮,这样当您按下播放按钮时,它就会开始渲染要显示的地图。从那里,我需要实现地图的滚动或移动。

我已经尝试使用Screen.blit(Map,(MAP_X - 5, MAP_Y))其他方向的其他操作在 x 或 y 方向上渲染它超过 -5 或 +5,但它似乎不起作用。我也试过pygame.scroll,但也没有用。

0 投票
2 回答
167 浏览

python - 如何使用 pytmx 正确显示旋转对象?

经过多次研究我没有找到答案,当我试图用 pytmx 在 pygame 中显示对象时,结果完全被破坏了,因为 x,y 随旋转而变化。我尝试使用矩阵旋转,但为此,我需要知道原始中心。我不知道怎么找到它,因为 Tiled 在旋转后发送给我,x,y...

所以我的目标只是用 pytmx 在 pygame 中显示对象图块。

如果我只使用 pygame.transform.rotate:

对于瓷砖对象,我得到了错误的 x,y 位置:

错误的图像

0 投票
1 回答
199 浏览

python - 在我的平台游戏上执行 Frustum Culling 需要帮助

为了实现 Frustum Culling 算法,我尝试做的是从取决于玩家 x 和 y 位置的位置开始 render() 函数中的嵌套 for 循环,这样代码只会循环通过.tmx 文件的一小部分必须渲染的部分。现在的问题是,如何从取决于我的 Player 坐标的位置开始循环?在此先感谢您的帮助。

0 投票
0 回答
148 浏览

python - pytmx 是否为您提供了一种方法来判断图像是否已旋转、水平翻转/诊断是否与 Tiled 一起使用?

我正在使用 pygame 和 Tiled 制作游戏来设计地图。我能够加载瓷砖并将它们粘贴到屏幕上。当我水平翻转瓷砖/在 Tiled 内旋转并运行游戏时,瓷砖不会在游戏内旋转。

所以我想在将瓷砖贴到屏幕上之前检查瓷砖是否旋转/翻转,我不知道该怎么做,或者这是否可能并继续使用瓷砖而没有任何旋转或翻转平铺?

我读到有你可以检查的标志,但在这一点上我也不确定,任何帮助都会很棒。这是用于制作地图的类

水平翻转的同一个图块如何出现在 Tiled 内部

我运行游戏时如何加载图像


好的,在阅读Tile flipping之后,这就是我从中理解的内容。

  • 获取gid

从这段代码中已经有了for x, y, gid, in layer:

  • 检查标志

gid 的最高三位存储翻转的状态。

说第 32 位用于水平翻转。所以要检查我们所做h_flipped = gid & (1<<31) # correct?的但这里的问题是当我这样做时它评估为 a 0。打印出未翻转1瓷砖和2翻转瓷砖的 gids2 & (1<<31) # false

伪代码有点混乱,也许我理解不正确。所以要么我得到的gids不正确,要么检查位不正确?或两者?更多帮助表示赞赏

0 投票
1 回答
282 浏览

python-3.x - 在 PyTMX 和 PyGame 中将微小的 TileMap 缩放到更大的尺寸

所以我设法在我的 PyGame 项目中创建、导入和显示 16x16 TileMap。我有一个名为ground的资产层和一个最初称为objects的 Objects 层。

带有我的图层的平铺软件屏幕截图

然后我有这个简单的代码来创建我的 TileMap :

编辑:我忘了说我的 16x16 地图实际上已重新缩放为 64x64 (TILE_SIZE) 图像,但仅适用于可见层ground,我也想对对象层进行此操作。

这对于缩放我的地面“可见层”非常有用。但是当我绘制碰撞时,您可以看到对象仍然非常小并且不适合我的新地图分辨率:

Blue:Player hit box 和 Yellow:Colliders 的游戏截图

如您所见,我在 TileMap 中设置的墙壁的命中框未正确缩放。

所以问题是,如何使用 pyTMX 缩放 TileMap 的对象层?

谢谢你们。

0 投票
1 回答
494 浏览

python - pygame中带有Tiled和pytmx的透明瓷砖问题

我无法让 pytmx 在 pygame 中正确渲染 Tiled 中的透明图块。在此示例中,您可以看到从 tmx 文件渲染的图块显示黑色背景,我希望它像直接从图像文件渲染的图像一样。

我试过弄乱.convert().convert_alpha()甚至放旗帜pygame.SCRALPHA,但没有运气。

这是获取用于重现示例的资产的链接:https ://filebin.net/yvmr5jz04j889mlx

这是示例的代码: