0

我有一个 2D tilemap,它以块的形式生成,每个块由 2x2 单元组成。我可以引用块本身并获取块中每个特定单元格的索引。但是,我还想将第一个图块的索引存储在该块中,这不是自动生成的。

在此处输入图像描述

例如,点击突出显示的块总是会产生“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。

4

2 回答 2

0

过了一会儿,我想通了。使用双 For 循环,索引计算结果如下:baseIndex = (X * 2) + (Y * 20); 完美匹配基本图块上的每个索引。2是超大尺寸,20是地图宽度加倍。要将其扩展为基于变量的解决方案:

 baseIndex = (X * chunkSize) + (Y * (mapSize * 2));
于 2013-12-08T15:25:22.077 回答
0

在我的脑海中,只需查看您拥有的图像,您就可以:

[in pseudocode]
if tileIndex tens digit is odd, minus 10
if tileIndex ones digit is odd, minus 1
于 2013-12-08T11:07:23.763 回答