【发布时间】:2012-07-28 03:59:17
【问题描述】:
我有一个tileset(一个充满其他小图像的图像)。我想得到一张叫做瓷砖的小图像,这样我就可以用它做点什么了。我知道每个图块的大小(它们的大小都相同)。 我有两个方程式:
x = (i % tiles_hor) * tile_h
y = (i % tiles_ver) * tile_w
x = (i % tiles_hor) * tile_w
y = (i / tiles_hor) * tile_w
其中 i 表示我要获取的 tile 的索引;
tiles_hor 是横向的瓦片数;
tiles_ver 是垂直的瓦片数;
tile_w和tile_h分别是tileset内每个tile的宽度和高度;
图块按顺序接收它们的索引,如下所示:
01 02 03 04 05
06 07 08 09 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
所以每一对数字都是tileset中一个tile的索引。 假设我想获得 04 的瓷砖(假设瓷砖的每个尺寸为 32x32): 第一个方程:
x = (4 % 5) * 32 = 128。所以它在图像中的 x 位置是 128
y = (4 % 5) * 32 = 0。所以图片里面的y是0;
用第二个方程:
x = (4 % 5) * 32 = 128。所以它在图像中的 x 位置是 128
y = (4 / 5) * 32 = 0。这里是 0,因为我们首先对最接近的次要数字的第一个表达式进行四舍五入(我不知道我的表达式是否正确。如果不是,请纠正我)。
请注意,我们正在考虑一个完美的方形图块集(在本例中为 5x5)
我的问题是:
第二个适用于大多数情况。当没有完美的正方形tileset并且高度很高时,第一个停止工作。
那我做错了什么?
另外,释放一个非常重要的值(tiles_ver 和 tile_h)的方程怎么可能是正确的?我错过了什么?
【问题讨论】: