我正在制作我的第一个3D游戏,但我陷入了一个部分。我从来没有对algortihms甚至数学都很好,所以我很难有这个:(
无论如何,我想生成3x3x3(当然,如果算法在任何大小上都会很棒!)“结构”或者它应该调用的任何东西。 1个单位是一个块/立方体。我不希望它充满块,但是随机生成形状,因此某些部分会有块而有些部分会是空的。所有的块应该连接到至少一个其他块(不是对角线,而是“直线”)。
我希望你明白我的目标:)
如果它有帮助的话,我很快就用油漆做了一张小照片。但是我希望它更加空洞,如果上半部分比下半部分更加空洞,那就更好了。
答案 0 :(得分:4)
为什么不创建一些结构,然后使用随机数来确定其中一个。如果您制作7个不同的用户/玩家几乎不会注意到任何形式的重复。 顺便说一句:如果忽略所有旋转对称的结构,就不应该有这么多不同的结构符合你的标准。
答案 1 :(得分:1)
作为@FlyOn评论的延伸,我建议你将问题视为一个规则系统。编写/绘制规则。问自己这样的问题:
生成相邻位置时,到达该位置的有效3空间移动是什么?
(实体中的每个坐标块有6个面相邻坐标块,8个相邻坐标块和12个边相邻坐标块.6 + 8 + 12 + 1 = 27 = 3 ^ 3)
如何将随机生成限制为仅生成面相邻坐标,以便您不必在随机后应用该规则?
< / LI>如果您处于位置(0,0,0),并且所选的随机相邻块是(0,0,-1),那么确定是否需要的测试是什么有效?
编写逻辑并编写一些单元测试样式的方法,用测试调用逻辑方法。当您使用不同的输入测试它们时,看看它们是否按预期工作。
3空间的逻辑谜题非常有趣:)。
答案 2 :(得分:0)
您可以实施的示例算法:
- 在3x3x3中选择一个随机位置
- 从可能的直接选项中选择一个随机方向(删除将带您进入立方体的选项)
- 转到那个位置(所以在你的3x3x3阵列中将它设置为'1'或类似的东西)
- 重新开始
可选:
*还删除您已经被选中的选项
*首先为你想要填充的斑点数量生成一个随机数,然后在你有这么多的时候停止算法
*允许所有方向,只需进入立方体的“另一侧”(这可能导致零件不与其他零件连接)