【问题标题】:Android collision detection accuracyAndroid 碰撞检测精度
【发布时间】:2013-10-27 06:11:12
【问题描述】:

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

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

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

我通过遍历一系列敌人来进行碰撞检测,在 for 循环中我循环所有子弹,然后为两者创建一个矩形,并检查每个敌人和子弹与 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;
}

我不知道如何解决它,我想要一些建议如何做到这一点,并举个例子......

【问题讨论】:

  • 子弹是直线运动吗?

标签: android collision-detection


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢,我想在找到我目前遇到的滞后问题的解决方案后,我会调查此事。
猜你喜欢
  • 1970-01-01
  • 2019-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-15
  • 1970-01-01
相关资源
最近更新 更多