Unity 2D阵列瓦片地图

时间:2017-03-26 16:53:23

标签: c# arrays unity3d 2d

我是Unity和C#的新手。然而,我正在尝试制作一个简单的2D平台游戏,我在其中制作了一个名为Block的对象的预制件。我想要做的是创建一个0和1的数组平铺图,其中1是块,0是什么都没有。另外,我不希望瓷砖地图是随机的。我希望块从另一个名为GameController的对象中实例化。我希望实现的一个完美的例子是这样的。

enter image description here

但我真的不知道怎么用数组做这个。我想保持简单,因为我正在努力学习统一和c#是如何工作的。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

所以你可以使用资产商店中的一些资产(例如:https://www.assetstore.unity3d.com/en/#!/list/2965-procedural-generation)这是一个非常艰难的挑战。我会重新录制这段视频:https://www.youtube.com/watch?v=k1pWpYEt2UE,但最接近你想要达到的是这一个:https://www.youtube.com/watch?v=gIUVRYViG_g 希望它有所帮助。

答案 1 :(得分:0)

你可以制作一个二维数组,例如int [40,100]并循环两次,如果数组中的数字是1,则将数组中的位置分别乘以块的长度或宽度。例如:

int[,] positions = new int[40,100];

for (int i = 0; i < 41; i++) {
    for (int j = 0; j < 100; j++) {
        if (positions[i,j] = 1) {
            GameObject temp = Instantiate(block, new Vector3(j * blockWidth, i * blockHeight, 0), Quaternion.identity) as GameObject;
        }
    }
}

将数组的所有坐标设置为这么大需要很长时间,但是你可以使用参数进行循环,或者如果它更小则只需要努力。否则,我会尝试在没有脚本的情况下进行。