【问题标题】:2D collision for games without AABB没有 AABB 的游戏的 2D 碰撞
【发布时间】:2012-02-19 03:12:51
【问题描述】:

检测 2d 游戏碰撞的最佳方法到底是什么?我使用 aabb(轴对齐边界框),但如果你有一个大圆圈或其他东西,你会在 200 像素之外击中它。最好的方法是查看两张图像中的像素是否相互接触?请告诉我一个好方法。

编辑: 好的,现在我意识到圆碰撞是多么简单。但是说我有一个椭圆形或不是真正形状的东西。甚至是旋转 45 度的正方形。

【问题讨论】:

  • 使用局部坐标轴(即,将一个坐标轴作为行进方向)。
  • 对于不需要棕褐色的圆圈,只需 (x1-x2)²+(y1-y2)²

标签: 2d collision-detection


【解决方案1】:

如果你有圆圈,你可以使用 Circle-To-Circle 碰撞。只需取中点的距离并将其与半径的长度进行比较。 除此之外,这真的取决于你需要什么。有大量的碰撞检测算法(主要是为了加快速度,例如通过使用帧之间的一致性),但这超出了简短的一般说明的范围,您需要详细说明您的问题。

【讨论】:

  • 感谢您的回答。我猜圆圈的东西很明显。
  • 好的,所以您要寻找始终有效的任意形状?
  • 我们应该在聊天中讨论这个问题
  • 不,我们不应该这样做,因为私人聊天违反了本网站的精神。你应该提出更清晰的问题,然后人们才能给出更清晰的答案。这样做的好处是其他人可以稍后找到并阅读讨论。例如:您谈到像素级容差,这可能表明您正在尝试进行基于精灵/蒙版的碰撞检测,这与基于几何的方法非常不同。一般来说,只有在您提供足够详细的信息后才能回答要求 The Best Way™ 的问题,因为(通常)没有解决问题的最佳方法。
  • 我只是这么说,所以这并没有变成讨论。 SO 有时会自动让您这样做。反正。当我说最好的时候,我指的是大多数人使用的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-06
相关资源
最近更新 更多