Android的游戏开发,离散运动

时间:2011-12-20 20:57:54

标签: android collision-detection

我正在开发一个简单的游戏,其中有砖块,球和桨,你应该用球击打砖块(你们都知道这个游戏)。

我的问题有点复杂,球以恒定速度移动,让我们假设每秒200px,让我们假设我每秒有30帧。这意味着每个球移动大约7个像素。

我每帧都有两件事: 1.在屏幕上绘制游戏。 2.移动球,碰撞检测等。

问题是在第X帧中球没有击中任何东西,但是在第X + 1帧中他移动了7个像素,然后他部分地在一个砖内(或者部分在两个相邻的砖内部,这更糟糕)。 / p> 发生这种情况是因为运动是离散的而不是连续的。

我真的不知道应该怎么处理它,我在我开发的每一款游戏中都遇到了这个问题(不仅适用于Android而且适用于PC)。可能我错过了一些对游戏开发理解至关重要的东西。

提前感谢。

2 个答案:

答案 0 :(得分:3)

数学方面有点大,但

上有一篇很好的文章
  http://www.gamedev.net/page/resources/_/technical/math-and-physics/a-verlet-based-approach-for-2d-game-physics-r2714?

(由于URL中的_似乎扰乱了SO的标记...)

基本上,你做得非常好 - 当然,有多种方法可以做到这一点。只需确保在查找碰撞时可以使用old(x,y)new(x,y),并在完成碰撞检测之后再考虑移动路径“暂定”。 (也许present(x,y)destination(x,y)是更好的条款)

Breakout 砖弹跳游戏的情况下,你将寻找present (x,y) + movement (x,y) → destination (x,y)的线(或矢量)与砖块边缘相交的位置,并创建一个在交叉点处其顶点的反射角。您可以快速方便地浏览该文章的整个后半部分,了解刚体反应。

答案 1 :(得分:0)

最简单的解决方案是使用某种类型的物理引擎。 Box2d是一个很棒的2D物理引擎,它有许多用几种语言编写的包装器。

通过使用物理引擎,您不必担心碰撞检测。所有这一切都为您照顾,以便您可以更专注于开发游戏的核心功能。