使用 STI 为 love2d 游戏加载平铺地图时出现问题

问题描述

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

解决方法

您可以这样做:

在任何网络搜索中输入“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 不支持瓷砖集合。\n你 需要创建一个纹理图集。”)

因此当任何图块集没有 image 字段时会触发此错误消息。

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

您需要创建一个纹理图集

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

,

阅读:使用四边形显示图像的一部分: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,quads[1]:getDimensions()),[2]=love.graphics.newQuad(505,37,[3]=love.graphics.newQuad(871,21,[4]=love.graphics.newQuad(1238,22,[5]=love.graphics.newQuad(1606,15,[6]=love.graphics.newQuad(1974,11,[7]=love.graphics.newQuad(1976,349,[8]=love.graphics.newQuad(136,382,[9]=love.graphics.newQuad(504,379,[10]=love.graphics.newQuad(871,366,[11]=love.graphics.newQuad(1236,362,[12]=love.graphics.newQuad(19,724,[13]=love.graphics.newQuad(1047,698,[14]=love.graphics.newQuad(1376,687,[15]=love.graphics.newQuad(1721,686,[16]=love.graphics.newQuad(2042,684,[17]=love.graphics.newQuad(347,704,660,quads[1]:getDimensions())
}
pquads={x=0,size=1,time=-1}
for i=1,#assets do table.insert(pquads,assets[i]) end

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...