0

我正在尝试创建一个坠落物体游戏。但是,我很难为这个游戏创造关卡。它不会改变场景或任何东西,但我希望它一路走来更难。有坏物品和好物品掉落,角色应该吃好物品并避免坏物品。

我正在使用 createItem 函数创建那些坏项目和好项目,并使用两个 timer.performWithDelay 调用此函数。物品随机掉落。一个用于好项目,一个用于坏项目。但是,有时坏项目在好项目之下,不可能抓住好项目。我怎么能阻止它?我添加了一个碰撞过滤器,让这些项目相互通过,这就是为什么它们会一个接一个地出现。

下面是我用两个计时器调用 createItem 的方法:

 goodTimer = timer.performWithDelay(1000, function() createItem(goodItem[math.random(1,#goodItem)],1) end, 0 )

 badTimer = timer.performWithDelay(5000, function()  createItem(badItem[math.random(1,#badItem)],0) end, 0 )
4

1 回答 1

0

如果您想要一个确定性的行为(例如,总是可以选择获得一个好的项目),您将不得不重新定义随机布局,使其在任何情况下都不会影响此行为。根据您的描述,您只是将碰撞考虑在内,这并不代表对纯随机性的准确校正。

在这种情况下,我会:

  • 在每个项目周围设置一个“安全区”。例如:给定项目的高度/宽度的 2 倍。
  • 使每个项目的生成依赖于其他(现有)项目。例如:在创建一个好项目之前,你的算法应该检查是否已经存在一个可能会干扰它的坏项目。也就是说,如果将上述安全区域考虑在内,那么这两个项目都有可能处于您不想要的情况。通过计算当前速度下相应安全区域的预期碰撞点,应该很容易进行这种分析。如果发现可能发生冲突,项目的生成将被延迟、完全忽略或者其类型可能会改变(从坏到好,反之亦然)。
  • 设置碰撞规则,但只是作为最安全的后校正,因为大多数情况应该由上述几点来解释。
于 2013-07-26T11:29:46.383 回答