我有一个以每个2x2个单元格组成的块生成的2D tilemap。我可以引用块本身并获取块中每个特定单元的索引。但是,我还要存储该块中第一个tile的索引,该索引不会自动生成。
例如,单击突出显示的块将始终生成“0”,单击下一个将生成“2”,单击其下的那个将始终生成“20”。红色数字表示图块/单元格的索引。黄色轮廓显示了一个实际的块。
在块的范围内,获得0,2,4,6,8,20等的最佳方法是什么? 生成它的代码在Actionscript 3中,并且是一个基本的双for循环。
编辑:
我想了一会儿,决定添加我的索引搜索代码。我不完全确定这是否有用,特别是因为它是用于查找单个单元格索引而不是块中的特定索引位置。
public function mousePosistion():Number
{
var mouseColX: Number = 0;
var mouseColY: Number = 0;
mouseColY = Math.ceil(this.mouseY / 64);
mouseColX = Math.ceil(this.mouseX / 64);
var mouseIndex:Number = mouseColX + (20 * mouseColY);
return mouseIndex;
}
注意:它的格式是实际地图的宽度为20,而不是示例中的10。
答案 0 :(得分:0)
离开我的头顶,只要看看你可以去的图像:
[in pseudocode]
if tileIndex tens digit is odd, minus 10
if tileIndex ones digit is odd, minus 1
答案 1 :(得分:0)
经过一段时间后,我想出来了。使用双For循环,索引计算得出:baseIndex =(X * 2)+(Y * 20);完美匹配基本图块上的每个索引。 2是超级的大小,20是地图的宽度加倍。要将其扩展为基于变量的解决方案:
baseIndex = (X * chunkSize) + (Y * (mapSize * 2));