将一个瓷砖更改为多个瓷砖的函数例如:5x7



我在unity (c#)中工作,我在我的瓷砖地图上放置瓷砖,然后将它们分开。一旦分离,我需要把它们变成"rooms"或广场。我怎么能从中间的贴图(原点/唯一的贴图)开始呢

我找到答案了!有了下面的函数,你就可以得到你想要的了。在实践中,它逐行构建,从底部开始。当他得到了向量的一个细胞,他说0.5 f或1(取决于它是奇数还是偶数)每一个坐标,并减去一半的"size"向量。这样,中心将始终为(0,0),其他向量将与您所做的示例相同。

脚本:

public void Calculate(Vector2 size)
{
List<Vector2> results = new List<Vector2>();
for (int i = 0; i < size.y; i++)
for (int o = 0; o < size.x; o++)
results.Add(new Vector2(o, i) + (new Vector2(size.x % 2 != 0 ? .5f : 1, size.y % 2 != 0 ? .5f : 1) - (size / 2)));
string st = "";
for (int i = 0; i < results.Count; i++)
st += "n" + results[i].ToString();
print(st);
}
void Start()
{
Calculate(new Vector2(5, 7));
}

计算(new Vector2(5,7))的输出,作为题目:(-2.00, -3.00)(-1.00, -3.00)(0.00, -3.00)(1.00, -3.00)(2.00, -3.00)(-2.00, -2.00)(-1.00, -2.00)(0.00, -2.00)(1.00, -2.00)(2.00, -2.00)(-2.00, -1.00)(-1.00, -1.00)(0.00, -1.00)(1.00, -1.00)(2.00, -1.00)(-2.00, 0.00)(-1.00, 0.00)(0.00, 0.00)(1.00, 0.00)(2.00, 0.00)(-2.00, 1.00)(-1.00, 1.00)(0.00, 1.00)(1.00, 1.00)(2.00, 1.00)(-2.00, 2.00)(-1.00, 2.00)(0.00, 2.00)(1.00, 2.00)(2.00, 2.00)(-2.00, 3.00)(-1.00, 3.00)(0.00, 3.00)(1.00, 3.00)(2.00, 3.00)

最新更新