创建随机平铺地图世界生成

时间:2013-12-07 05:32:26

标签: c# random unity3d 2d

所以在搜索之后我发现只有Java和C ++,我很喜欢并且只知道.net足以完成我的项目。我们正在创建一个随机的tile生成地图(想想terraria / flat minecraft有点东西),在Unity中创建了几乎所有的材料和一堆其他代码后,我意识到我无法理解这一点(并且知道下一步)对perlin一无所知,无法弄明白,所以我将不胜感激。)

我开始在.net(MS VS)中将屏幕空间分成多块,我称之为32x32的parcel并创建了一个循环来填充它。但我们正在使用Unity,因为它已经是一个游戏引擎,并且不确定如何实现这一目标。

首先是必须制作地图的不同精灵,我已经创建了必须进入什么高度的类和编码列表,但我不知道如何从无到有生成所有随机地形,因为世界需要在玩家看到任何东西之前随机创建。

我尝试了一个网格,但是它使用了太多的内存循环;我也尝试了一个平面并用纹理填充它,但是无法正确地进行随机化,当然它是一个带有图像的平面对象,而不是可以与之交互的块。

我的直接问题:我们如何使用C#中的2D空间中的随机切片生成由数千个难以处理的切片组成的世界(我们已经对X& Y有了限制)? / strong>(严格的C#或者可以导入Unity的东西,类似于我之前提到过的游戏。)

提前感谢任何建议,希望我提供足够的信息。我知道这完全是关于程序生成和perlin噪声算法,但我们都不知道那些也不知道从哪里开始。

编辑:我被要求提供更多信息,到目前为止,我一直在使用for循环创建单个和大块的随机磁贴。使用IList来存储已经存在的内容,以便它不会产生任何重叠。 (我不知道更好的方法。)

两种方法都很有效,直到我通过大约150个块,然后它只是锁定并且必须崩溃。我已经尝试过没有列表系统认为数据是原因,但事实并非如此。我尝试在Unity中使用Tidy Tile Mapper,但是一旦传递了大约200个tile,就会出现同样的问题。我找不到创建玩家可以与之交互的对象的正确方法而不会堵塞内存。

1 个答案:

答案 0 :(得分:0)

也许您可以向我们展示一些您已经尝试过的代码。有了这些东西你总是需要管理内存才能把它拉下来,所以也许你正在用错误的方法尝试正确的事情。这不是一个容易回答的问题,除了针对每个不同目的的不同之外,这里要做的不仅仅是一篇文章。