动态生成水平并放置障碍Unity

时间:2016-02-27 17:37:02

标签: c# unity3d scripting game-engine

所以在我的游戏中,我想制作由五面墙组成的tunel,每个墙都可以移动,但它们与关节连接。我希望水平是无限的,但我不知道如何做到这一点。我想最好的方法是在玩家向前移动的同时添加tunel的另一部分,但如果有经验的人帮助我,那将是很好的。另一件事是随机地在墙壁(平面)上放置障碍物。有没有办法将障碍物作为墙的一个孩子放置在相对于它的墙上((0,0,0)是否在墙的中心)?如果我没有清楚地解释一切,请告诉我。

1 个答案:

答案 0 :(得分:0)

当然有可能。例如,您可能只有3个隧道段:

   (P)
1 - 2 - 3

玩家在第2段中。如果他们向前移动到3,你只需在结尾处剪掉1并在3之后附加一个新的第4段。

       (P)
    2 - 3 - 4

当然,当玩家从3回到2时,你可以做同样的事情,只需再次关闭4并附加1到2。

您的细分受众群可能完全相同或完全不同,这取决于您。即使段是相同的,您仍然可以有变化。他们可能有随机装饰的占位符,或项目产生,怪物产卵等等。这些占位符是否实际填充可以由一个公式决定,该公式保证是随机的,同时仍然总是为特定段中的特定占位符返回相同的结果:

假设所有段都相同并且有5个占位符可以从装饰(1),项目(2),怪物(3)或任何东西(0)中产生任何东西。决定产生什么的公式可能如下所示:

int GetPlaceholderContent(int segment, int placeholder)
{
    System.Random random = new System.Random(segment * 1024 + placeholder);
    return random.Next(0, 4);
}

void FillPlaceholder(int segment, int placeholder)
{
    switch (GetPlaceholderContent(segment, placeholder))
    {
        case 0: /* FillWithNothing */ break;
        case 1: /* FillWithDecoration */ break;
        case 2: /* FillWithItem */ break;
        case 3: /* FillWithMonster */ break;
    }
}

希望这能为你提供一个起点。