2013-07-26 48 views
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) 

回答

0

如果你想有一个确定性的行为(例如,总是要获得良好的项目选项),你将不得不重新定义了随机布局,以至于在任何情况下都不会影响此行为。从你的描述来看,你只是将碰撞考虑在内,而不是对纯随机性的精确修正。

在这种情况下,我想:

  • 设立“安全区”周围的每个项目。例如:2 乘以给定物品的高度/宽度。
  • 使每个项目的生成取决于其他(现有)项目。例如:在创建一个好的项目之前,你的算法应该检查是否已经存在可能会干扰它的错误项目。也就是说,如果考虑到上述安全区域,这两个项目都有可能处于你不想要的状态。通过计算当前速度下相应安全区域的预期碰撞点,可轻松进行此分析。在发现碰撞可能发生的情况下,物品的生成将被延迟,完全忽略或者其类型可能被改变(从差到好,反之亦然)。
  • 设置了碰撞规则,但只是在最安全的一方后修正,只要大多数情况应该由上述点解释。