【问题标题】:Issue when loading Tiled map with STI for love2d game使用 STI 为 love2d 游戏加载平铺地图时出现问题
【发布时间】:2021-07-05 16:59:17
【问题描述】:

我从事小型 Love2D 游戏已经有一段时间了,但在我以 Lua 格式为 Simple Tiled Imp 导出的 Tiled 文件中遇到了问题。尽管我只使用了一个图块集,但尝试加载文件总是会导致错误“STI 尚不支持图块集合”。我已经四处寻找这究竟意味着什么或可能的解决方案的答案,但一无所获……任何帮助将不胜感激。 :) (总的来说,我对 Love 和 Lua 很陌生,如果这是一个菜鸟问题,我很抱歉)

【问题讨论】:

    标签: lua love2d tiled


    【解决方案1】:

    您可以这样做:

    在任何网络搜索中输入“STI 尚不支持 Tile Collections”。例如,www.google.com 会生成一个回答您问题的论坛帖子。

    它告诉你需要创建一个texture atlas

    第二次命中:

    来自https://github.com/karai17/Simple-Tiled-Implementation/blob/704c78c1c155679dc7ad84cd76dfa5d8d78baf25/sti/init.lua#L99

    assert(tileset.image, "STI 不支持 Tile Collections。\n你 需要创建一个纹理图集。”)

    所以当任何瓦片集没有image 字段时会触发此错误消息。

    我没有查看历史记录,所以我不确定您是否使用了该模块的过时版本,或者您是否只是没有阅读完整的错误消息来告诉您该怎么做。

    您需要创建纹理图集

    您可以使用纹理图集生成器来创建纹理图集。同样,网络搜索是您的朋友。

    【讨论】:

    • 感谢您的回答。我确实阅读了错误消息,但我不明白。事实上,我使用了一个图块集(我在 openpixelproject.com 上找到的一个 .png)并用它制作了一张地图。然后我将此地图导出到一个 .lua 文件中。也许我没有明白什么是地图集,我不明白这个错误。瓦片集图像和图集有什么区别?
    • 我不知道,我想做一点研究会很快回答这个问题
    • 我发现了,问题是我将tileset加载为外部图集。我必须将它嵌入到地图中,以便(我猜)lua 文件包含所有信息,并且没有几条信息的路径。
    【解决方案2】:

    阅读:使用 Quad 显示图像的一部分:https://love2d.org/wiki/love.graphics.newQuad
    就像这个例子中的一张图片中的不同行星......

    quads={love.graphics.newImage("planets.png")
    }
    local assets={x=0,y=0,size=.1,time=-1,
    [1]=love.graphics.newQuad(138,33,300,300,quads[1]:getDimensions()),
    [2]=love.graphics.newQuad(505,37,300,300,quads[1]:getDimensions()),
    [3]=love.graphics.newQuad(871,21,300,300,quads[1]:getDimensions()),
    [4]=love.graphics.newQuad(1238,22,300,300,quads[1]:getDimensions()),
    [5]=love.graphics.newQuad(1606,15,300,300,quads[1]:getDimensions()),
    [6]=love.graphics.newQuad(1974,11,300,300,quads[1]:getDimensions()),
    [7]=love.graphics.newQuad(1976,349,300,300,quads[1]:getDimensions()),
    [8]=love.graphics.newQuad(136,382,300,300,quads[1]:getDimensions()),
    [9]=love.graphics.newQuad(504,379,300,300,quads[1]:getDimensions()),
    [10]=love.graphics.newQuad(871,366,300,300,quads[1]:getDimensions()),
    [11]=love.graphics.newQuad(1236,362,300,300,quads[1]:getDimensions()),
    [12]=love.graphics.newQuad(19,724,300,300,quads[1]:getDimensions()),
    [13]=love.graphics.newQuad(1047,698,300,300,quads[1]:getDimensions()),
    [14]=love.graphics.newQuad(1376,687,300,300,quads[1]:getDimensions()),
    [15]=love.graphics.newQuad(1721,686,300,300,quads[1]:getDimensions()),
    [16]=love.graphics.newQuad(2042,684,300,300,quads[1]:getDimensions()),
    [17]=love.graphics.newQuad(347,704,660,300,quads[1]:getDimensions())
    }
    pquads={x=0,y=0,size=1,time=-1}
    for i=1,#assets do table.insert(pquads,assets[i]) end
    

    ...其中第一对newQuad(138,33, 是PNG 图像的左上角,最后一对300,300,quads[1]:getDimensions()), 是单个图块的大小。
    瓷砖的位置可以在 gimp 或 photoshop 等程序中显示。
    只需将光标移动到磁贴的左上角并查看状态栏。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多