Android碰撞检测准确性

时间:2012-10-18 19:48:59

标签: android collision-detection

我有一个Sprite和多个位图作为项目符号。现在的问题是我希望子弹的速度非常快,但这又给我的碰撞检测功能带来了问题,它的工作方式是每一帧我都在敌人和子弹上创建一个矩形并检查重叠。

现在,如果一颗子弹的速度非常快,就像从一点到另一点的“跳跃”一样,这就意味着如果一个敌人很小并且子弹“跳过”敌人,它就不会被注意到。

我想知道的是,如果有一种方法可以检测两个移动物体之间是否会发生碰撞,或者看看敌人是否在子弹的轨迹中。

我通过循环遍历一系列敌人来进行碰撞检测,并在循环内部循环所有子弹,然后为两者创建一个矩形并检查与每个敌人和子弹的Rect.intersects的碰撞。

子弹标题由一个固定点和触摸输入测量,然后通过此函数计算:

public void calcPoint(float x, float y) {
    double alfa = Math.atan(x / y);//x and y are inputs
    bulletPointX = (float) Math.sin(alfa) * speed;
    bulletPointY = (float) Math.cos(alfa) * speed;
}

我不知道如何解决这个问题,我想要一些如何做到这一点,以及一个例子......

1 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点,但最简单的方法可能是predictive collision detection.基本上,您将移动分成时间段并检查每个段。如果你有几千个物体四处移动,它可能效率不高,但在大多数情况下,它可以正常工作。

也有几个名字。我提供的链接可以帮助您了解基础知识,但要了解更多信息,请搜索:

  • 帧独立碰撞检测
  • 连续碰撞检测
  • 扫描测试