【问题标题】:How can I calculate the primary index of a tilemap chunk?如何计算 tilemap 块的主索引?
【发布时间】:2013-12-25 10:55:40
【问题描述】:

我有一个 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。

【问题讨论】:

    标签: actionscript-3 actionscript tiles-game


    【解决方案1】:

    在我的脑海中,只要看看你拥有的图像,你就可以去:

    [in pseudocode]
    if tileIndex tens digit is odd, minus 10
    if tileIndex ones digit is odd, minus 1
    

    【讨论】:

      【解决方案2】:

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

       baseIndex = (X * chunkSize) + (Y * (mapSize * 2));
      

      【讨论】:

        猜你喜欢
        • 2021-12-27
        • 2016-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多