【问题标题】:Random Falling Objects and Collision Detection Method随机坠落物体与碰撞检测方法
【发布时间】:2011-03-23 22:41:29
【问题描述】:

我正在编写一个游戏,您可以在其中捕捉从屏幕顶部掉落的物体(位图)。这些位图都将具有相同的图像文件。但是,我希望它们中的随机数量无限下降(直到游戏“结束”)。我现在的问题是提出算法来检测这些随机生成的位图的捕获。当我只有一个图像掉落时,我可以注册一个捕获,但我不知道如何实现多个图像掉落并能够实现碰撞检测。到目前为止,我提出了两个想法。其中之一是有一个队列,每个落下的对象在创建时都会被放入队列中。该程序只会检测盒子是否在队列的第一个位置捕获了对象。如果它 (a) 被捕获或 ( 到达屏幕上的某个点,则该对象将被出列。我的另一个想法更像是一个问题 - 我是否能够为这个坠落的对象创建一个类,并拥有一个它里面有处理冲突的方法吗?一个总是在创建该类的新实例时监听冲突的方法?

请告诉我您的想法和建议!

【问题讨论】:

    标签: java android random


    【解决方案1】:

    如果您只想检查下落物体和捕捉盒之间的碰撞,您可能只需按高度对物体进行排序 - 例如使用插入排序。如果所有对象都具有相同的速度和大小,这将更容易,因为那时您可以使用队列。

    然后从最低的物体开始检查,直到你得到的物体太高而不会发生碰撞(如果盒子可以改变高度,这也可能会改变)。

    例子:

    |           6  |
    |   5          |
    |  3      4    |
    |              |
    +----2---------+  <-- if you reach an object at this height stop
    | 1            |
    |   |__|       |
    +--------------+  
    

    假设你有 6 个坠落的物体。如果它们已排序,您现在可以遍历列表并检查可能的冲突。如果您达到高度阈值(对象 2 所在的位置),您可以停下来,因为它们还不能碰撞(无需检查对象 3-6)。

    请注意,还有其他更复杂但更快的方法,但这应该可以帮助您入门。

    编辑:

    这是一种扫描和修剪算法,以防你想用谷歌搜索它。

    另一种方法可能是计算 ETA(估计到达时间),即为每个新对象计算它应该越过阈值线的时间。然后按该时间排序并检查所有时间差

    【讨论】:

      猜你喜欢
      • 2013-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-10
      相关资源
      最近更新 更多