您将如何处理具有各自大小的“块/体素”?

时间:2019-07-15 16:19:58

标签: c# logic pseudocode

说明:

让我们假设我制作的游戏类似于《我的世界》,但是每个方块可以有任意大小。

    public struct Block
    {
        Size size;
        OtherDataWhichDoesNotMatterInThisQuestion data;
    }

我正在使用整数值作为坐标和大小。

您将如何存储这些块,因此,当您调用诸如GetBlockAtCoordinates(1,1,1)之类的东西时,将返回坐标为(0,0,0)且大小为(2,2,2)的块?

我尝试过的事情:

1)将ID存储在数组中。第一个索引将是块ID,在该块占用空间的任何地方都将是-id。无效,因为可能存在具有相同ID的块,并且我不想将ID存储为结构的ID。

图形化修饰很少

-1 -1 -1
 1 -1 -1

(1为id,-1表示该空间被1占用。如果我们在ID旁边添加ID为1的块,则无法知道哪个块是哪个。)

2)将结构存储在List中并遍历每个块。

布尔值小变化: (block.coords <=坐标)&&((block.coords + block.size)> =坐标) 这似乎非常无效,因为无法使用此方法制作块。一个块可能比块大,因此需要遍历所有内容。

0 个答案:

没有答案