【问题标题】:Circle Corner Collision Behavior圆角碰撞行为
【发布时间】:2012-06-19 23:26:37
【问题描述】:

我正在做一个项目,我有一个 2D 滚动大理石。我可以检测到弹珠何时撞到盒子的​​角落,但我无法弄清楚它撞到角落时应该有什么行为。我需要弄清楚如何重新定位球,以免它与盒子重叠。对于一个盒子到盒子的碰撞,就像将盒子设置在彼此旁边一样简单,但是对于一个圆圈和盒子,我不知道将大理石移动到哪里,所以它看起来很逼真。

我不是在问它是如何反弹的。我对三角有很好的理解。当您将弹珠移向盒子时,它会在某个时候与盒子重叠。我需要知道如何制作它,这样它们就不会再重叠了,但它看起来仍然很逼真。它不需要反弹(就像假设大理石的一部分有无限大的质量)。

【问题讨论】:

  • 你对三角学有基本的了解吗?
  • 您是在问“大理石碰到角落时如何反弹?”?

标签: collision geometry game-physics


【解决方案1】:

好好看看维基百科上的这篇文章:Elastic Collision

您需要在任何给定的表面点为您的 2D 对象创建表面法线,如果您的框是完全方形的,这将是一个问题,因为锐利的边缘没有法线。您必须对拐角情况(没有双关语)进行特殊处理,并为它们提供表面法线,即在拐角处连接的两条线的法线的平均值。

基本上,使用向量。

【讨论】:

  • 感谢您的建议,但我不需要关闭弹珠“反弹”。我只需要它不与块重叠,这意味着将其移动到一个位置,以便大理石接触盒子但不重叠。
  • 嗯,这是一个不同的问题。如果您可以检测到碰撞,为什么您无法检测到角碰撞?您可能需要重新考虑一下您的代码。
猜你喜欢
  • 2018-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-20
  • 1970-01-01
  • 2022-09-25
  • 2012-01-15
  • 1970-01-01
相关资源
最近更新 更多