【发布时间】:2015-11-20 13:30:17
【问题描述】:
我试图制作一个游戏,其中玩家只能在无限地图中向前移动,并且路径(就像点一样,路径只是视觉效果)是程序生成的。我希望这些路径具有不同的长度(something like the tree of life,但只生成所选路径的分支)。
这就是我如何生成没有重叠的分支:
List<Vector3> everyPos; //predetermined position
public void Spawn(int amount)
{
List<Vector3> possiblePos = new List<Vector3>(everyPos);
for (int i = 0; i < amount; i++)
{
int index = Random(0, possiblePos.Count); //Find a random position
SpawnObjectAt(currentPosition+possiblePos[index]));//Create a point there
possiblePos.RemoveAt(index); //Remove that position from the list
}
}
问题是,look at this image(I can't embed image yet):
红色是玩家开始的地方,绿色可能是第一步的生成位置。
如果在1和2产生了2个点,玩家选择point1,那么第二次可能的位置将是黑色区域中的一个点,其中包括point2,所以如果我继续下去,最终会重叠.
我怎样才能避免这种情况?我正在制作一个手机游戏,所以我不想缓存每一个点。任何帮助将非常感激!谢谢!
这是一个小型网页游戏,其机制与我试图实现的目标有些相似:newgrounds.com/portal/view/592325/
【问题讨论】:
-
您使用什么语言?您能否包含一些代码或一些图像来解释您的意思?
-
我用的是C#但是任何语言都可以,其实我不需要任何代码,只是一个方向。关于图片我在上面添加了一张图片,以及一个简单的游戏,只需一分钟即可尝试
-
我玩过这个游戏,但我不明白你所说的路径重叠是什么意思,但如果你想生成一个“喜欢”的路径,应该不会太难。
标签: c# mobile random procedural-generation